bean初始化的三种方式
概念的个人理解: IoC(控制反转):对于这个的理解首先要明白的是反转了什么,既然有反转那么正向是什么? 在没有spring之前是应用程序直接自己控制资源而有了spring之后应用程序就不需要自己去了解资源底层的一切 由容器去控制资源了,这里对资源的控制权发生了改变,这就叫控制反转DI(依赖注入):现在应用程序如果需要资源就直接向容器要,它不用管这个资源怎么来的只需要用它就可以了
·
概念的个人理解:
IoC(控制反转):对于这个的理解首先要明白的是反转了什么,既然有反转那么正向是什么?
在没有spring之前是应用程序直接自己控制资源而有了spring之后应用程序就不需要自己去了解资源底层的一切
由容器去控制资源了,这里对资源的控制权发生了改变,这就叫控制反转
DI(依赖注入):现在应用程序如果需要资源就直接向容器要,它不用管这个资源怎么来的只需要用它就可以了
这里容器向应用程序提供资源就叫依赖注入
实例化的两种方式:一般使用ApplicationContext,它是建立在BeanFactory之上的,拥有更多的方法
BeanFactory:延迟加载(使用时加载)
ApplicationContext:立即加载(初始化时加载)
初始化的三种方法:
1.类构造器初始化:最常用的方法,也是最简单的方法,构造器可以不用写可以用默认的
public class Bean1 {
public Bean1() {
System.out.println("bean 构造方法");
}
public void fn() {
System.out.println("bean1 fn.....");
}
}
xml文件中的配置:
<!--构造器初始化 -->
1.类构造器(不写就行),默认调用构造器无参方法
<bean class="com.array.ioc.bean.xml.init.Bean1" id="bean1"></bean>
测试代码:
ApplicationContext axt = new ClassPathXmlApplicationContext("applicationContext.xml");
Bean1 bean1 = (Bean1) axt.getBean("bean1");
bean1.fn();
2.静态工厂初始化(了解)
bean类:
public class Bean2 {
public void fn() {
System.out.println("bean2 fn");
}
}
工厂类:方法必须是静态的,否则报错
public class Bean2Factory {
public static Bean2 getInst() {
//
System.out.println("Bean2 getinst");
return new Bean2();
}
}
测试代码:
ApplicationContext axt = new ClassPathXmlApplicationContext("applicationContext.xml");
Bean2 bean2 = (Bean2) axt.getBean("bean2");
bean2.fn();
3.实例工厂初始化:
bean类
public class Bean3 {
public void fn() {
System.out.println("bean3 fn");
}
}
工厂类:
public class Bean3Factory {
public Bean3 getInst() {
//
System.out.println("Bean3 getinst");
return new Bean3();
}
}
xml文件配置:
<!-- 首先要创建实例工厂bean -->
<bean class="com.array.ioc.bean.xml.init.Bean3Factory" id="beanFactory"></bean>
<!-- 实例工厂初始化-->
<bean factory-bean="beanFactory" factory-method="getInst" id="bean3"></bean>
测试类:
ApplicationContext axt = new ClassPathXmlApplicationContext("applicationContext.xml");
Bean3 bean3 = (Bean3) axt.getBean("bean3");
bean3.fn();
更多推荐
已为社区贡献1条内容
所有评论(0)