1. 構造器實例化 spring容器通過bean對應的預設的構造函數來實例化bean。 2. 靜態工廠方式實例化 首先創建一個靜態工廠類,在類中定義一個靜態方法創建實例。 靜態工廠類及靜態方法: xml配置文件 3. 實例工廠方式實例化 該種方式的工廠類中,不再使用靜態方法創建Bean實例,而是採用 ...
1. 構造器實例化
spring容器通過bean對應的預設的構造函數來實例化bean。
2. 靜態工廠方式實例化
首先創建一個靜態工廠類,在類中定義一個靜態方法創建實例。
靜態工廠類及靜態方法:
public class MyUserDaoFactory{
//靜態方法,返回UserDaoImpl的實例對象
public static UserDaoImpl createUserDao{
return new UserDaoImpl();
}
}
xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!-- 將指定對象配置給spring,讓spring創建其實例 -->
<bean id="userDao" class="com.ioc.MyUserDaoFactory" factory-method="createUserDao"/>
</beans>
3. 實例工廠方式實例化
該種方式的工廠類中,不再使用靜態方法創建Bean實例,而是採用直接創建Bean實例的方式。同時在配置文件中,需要實例化的Bean也不是通過class屬性直接指向其實例化的類,而是通過factory-bean屬性配置一個實例工廠,然後使用factory-method屬性確定使用工廠中哪個方法。
工廠類方法:
public class MyBeanFactory{
public MyBeanFactory(){
System.out.println("this is a bean factory");
}
public UserDaoImpl createUserDao(){
return new UserDaoImpl();
}
}
xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!-- 配置工廠 -->
<bean id="myBeanFactory" class="com.ioc.MyBeanFactory"/>
<!-- 使用factory-bean屬性配置一個實例工廠,使用factory-method屬性確定工廠中的哪個方法 -->
<bean id="userDao" factory-bean="myBeanFactory" factory-method="createUserDao"/>
</beans>
主函數
public class Client {
public static void main(String[] args) {
// TODO Auto-generated method stub
//此處定義xml文件放置的位置為src目錄下的com/xml目錄下
String path = "com/xml/bean.xml";
ApplicationContext application = new ClassPathXmlApplicationContext(path);
UserDaoImpl userDao = (UserDaoImpl) application.getBean("userDao");
userDao.sayHello(); //調用UserDaoImpl類的sayHello方法
}
}