Spring Bean的实例化的三种方式
方式一:使用类构造器实例化(默认方式):
在applicationContext文件中
``` <!--第一种:无参构造器的方式--> <bean id="bean1" class="com.imoo.ioc.demo2.Bean1"/> ``` 在Bean中 ``` public class Bean1 { public Bean1() { System.out.println("Bean1被实例化了"); } } public void demo1() { ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); Bean1 bean1 =(Bean1) applicationContext.getBean("bean1"); } ```
方式二:使用静态工厂方法实例化(简单工厂模式):
注意:此种方式中在配置中多一个factory-method,切记
在applicationContext文件中
<!--第二种:静态工厂的方式--> <bean id="bean2" class="com.imoo.ioc.demo2.Bean2Factory" factory-method="creatBean2"/> public class Bean2 { }
在代码中
public class Bean2 { } public class Bean2Factory { public static Bean2 creatBean2() { System.out.println("Bean2Factory方法已经执行了"); return new Bean2(); } } public void demo2() { ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); Bean2 bean2 =(Bean2) applicationContext.getBean("bean2"); }
方式三:使用实例工厂方法进行实例化
注意:与第二种方式不同的点是:bean工厂中方法不是static,在xml中要先写factory的路径,然后配置bean,因为静态的可以直接用类名点调用
在applicationContext文件中
<!--第三种:实例工厂的方式--> <bean id="bean3factory" class="com.imoo.ioc.demo2.Bean3Factory"/> <bean id="bean3" factory-bean="bean3factory" factory-method="creatBean3"/>
在代码中:
public class Bean3 { } public class Bean3Factory { public Bean3 creatBean3() { System.out.println("bean3的工厂被执行了"); return new Bean3(); } } public void demo3() { ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); Bean3 bean3 =(Bean3) applicationContext.getBean("bean3"); }