1.構造器實例化
Spring容器通過Bean對應的類中默認的構造函數來實例化bean
<bean id="bean1" class="com.instance.contructor.Bean1"></bean>
2.靜態工廠方式實例化
創建一個靜態工廠來實例化Bean
Bean
package com.instance.static_factory;
public class Bean2 {
}
靜態工廠創建示例
package com.instance.static_factory;
public class MyBean2Factory {
public static Bean2 createBean() {
return new Bean2();
}
}
配置文件示例
需要在bean標籤中設置factory-method屬性的值,只需寫上靜態工廠類中創建Bean的靜態方法名稱即可。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="bean2" class="com.instance.static_factory.MyBean2Factory" factory-method="createBean"></bean>
</beans>
3.實例工廠方式實例化
在配置文件中,通過factory-bean屬性配置一個實例工廠,然後使用factory-method屬性確定使用工廠中的哪個方法。
Bean:
package com.instance.factory;
public class Bean3 {
}
實例工廠類:
package com.instance.factory;
public class MyBean3Factory {
public MyBean3Factory() {
System.out.println("Bean3工廠實例化中...");
}
public Bean3 createBean() {
return new Bean3();
}
}
配置文件示例:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="myBean3Factory" class="com.instance.factory.MyBean3Factory"></bean>
<bean id="bean3" factory-bean="myBean3Factory" factory-method="createBean"></bean>
</beans>
測試代碼:
package com.instance.static_factory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class InstanceTest2 {
public static void main(String[] args) {
//定義配置文件路徑
String xmlPath = "com/instance/static_factory/bean2.xml";
//創建applicationContext對象
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);
//獲取Bean2的實例並輸出
System.out.println(applicationContext.getBean("bean2"));
}
}