Spring第二章:IoC容器
IoC概念:
IoC类型:
- 构造器注入
- 属性注入:setter
- 接口注入:通过它接口具有的方法 (setter) 来注入。不常用
资源抽象接口
原因:jdk不够好
地位:
资源加载:支持ant风格、按url前缀加载
BeanFactory
beanfactory —— applicationContext 关系
beanfactory定义:
public class BeanTest {
public static void main(String[] args) throws IOException {
// 获取资源chap4/applicationContext.xml配置文件
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
Resource resource = resolver.getResource("classpath:chap4/applicationContext.xml");
System.out.println(resource.getURI().toString());
// 加载资源,初始化beanFactor,并使用
DefaultListableBeanFactory factory = new DefaultListableBeanFactory();
XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(factory);
reader.loadBeanDefinitions(resource);
System.out.println(“——— init factory ———“);
User user = factory.getBean(“chap4_user”, User.class);
user.introduce();
}
}
<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="chap4_user" class="pojo.User">
<property name="id" value="1"/>
<property name="name" value="qiuqiu"/>
<property name="password" value="admin"/>
</bean>
</beans>
applicationContext
applicationContext也是接口,除了继承了BeanFactory,还完善了其他功能(继承了其他接口 ):资源加载、事件发布、消息…
‼️区别1:applicationContext更勤奋、BeanFactory更懒
WebApplicationContext暂不复习
父子容器暂不复习
bean生命周期:BeanFactory中 :p104
BeanFactoryAware, BeanNameAware, InitializingBean, DisposableBean
详细的生命周期的控制编程,暂时不复习
bean生命周期:applicationContext中 :p112
‼️区别2:对于后“处理器” applicationContext更方便,BeanFactory更麻烦