Spring是自动帮我们创建对象的,有几种创建Bean的方式呢?
构造方法实例化:(默认无参数)其实就是反射new Instance().
静态工厂实例化:
实例工厂实例化:
一般不会改变它实例化的方式。其他两种了解一下即可。
package cn.itcast.spring3.demo2;/** * 使用无参数的构造方法实例化 * @author zhongzh * */public class Bean1 {/*public Bean1(String name){//这里写了一个带参构造,那么无参构造就不执行了 //有一个有参无参就没有了 }*/ public Bean1(){ System.out.println("使用无参数的构造方法实例化Bean1方法....."); }}
package cn.itcast.spring3.demo2;/** * 使用静态工厂的方式实例化 * @author zhongzh * */public class Bean2 { }
package cn.itcast.spring3.demo2;/** * 使用实例工厂实例化 * @author zhongzh * */public class Bean3{ //加载配置文件的时候就会加载这个类了,会帮你创建了 }
package cn.itcast.spring3.demo2;/** * Bean2的静态工厂 * @author zhongzh * */public class Bean2Factory { public static Bean2 getBean2(){ System.out.println("静态工厂的获得Bean2的方法...."); return new Bean2();//什么是静态工厂?就是这里提供一个静态的方法来返回Bean2的实例 }}
package cn.itcast.spring3.demo2;/** * 使用实例工厂 * @author zhongzh * *///实例工厂与静态工厂的唯一区别是它里面的方法是不是静态的public class Bean3Factory { public Bean3 getBean3(){ System.out.println("Bean3实例工厂的getBean3方法....."); return new Bean3(); }}
package cn.itcast.spring3.demo2;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;/** * Bean的实例化的方式 * * @author zhongzh * */public class SpringTest2 {@Testpublic void demo1(){ //无参数的构造方法的实例化 ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");//实例化工厂 Bean1 bean1 = (Bean1) applicationContext.getBean("bean1");//通过配置文件里面配置的key获得bean1 System.out.println(bean1); }@Testpublic void demo2(){ //静态工厂的实例化 ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");//实例化工厂 Bean2 bean2 = (Bean2) applicationContext.getBean("bean2");//通过配置文件里面配置的key获得bean2 System.out.println(bean2); }@Test//实例工厂实例化public void demo3(){ //静态工厂的实例化 ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");//实例化工厂 Bean3 bean3 = (Bean3) applicationContext.getBean("bean3");//通过配置文件里面配置的key获得bean2 System.out.println(bean3); }}