文章目录
一、IOC
- Why:降低对象间的耦合
- What:创建对象&注入依赖
- How:工厂模式 》 工厂+XML配置+反射 》 工厂+注解+反射
二、Spring IOC XML配置
- 创建对象:无参构造、有参构造、作用域、自动装配、延迟初始化
- 注入属性:p名称空间、空值和特殊符号
- 注入Bean:内外方式、级联赋值
- 注入集合:[],Java常用集合
- 外部属性配置文件
- 工厂Bean:创建的是其它Bean
三、Spring IOC 注解
- 创建对象:@Componet @Controller @Service @Repository @Lazy @Bean
@Component 注解作用于类,而@Bean注解作用于方法
- 注入属性:@Value
- 注入Bean:@Autowired @Qualifier @Resource
- 注入集合:@Autowired; 对于向map中注入,bean注入后key为该bean的id。
- 零配置:@Configuration @ComponentScan
- 外部属性配置文件:@PropertySource
- Bean的生命周期:@PostConstruct=init @PreDestroy=destory,其它接口
四、Spring IOC 其它
1.Bean生命周期
- 只有这四个阶段:实例化 -> 属性赋值 -> 初始化 -> 销毁。
- 但Bean生命周期的扩展点可以划分为以下几类:
1).Bean自身的方法:通过配置文件中<bean>的init-method和destroy-method指定的方法 2).Bean级生命周期接口方法:这个包括了BeanNameAware、BeanFactoryAware、InitializingBean和DiposableBean这些接口的方法 Aware类型的接口的作用就是让我们能够拿到Spring容器中的一些资源。 3).容器级生命周期接口方法:InstantiationAwareBeanPostProcessor实际上继承了BeanPostProcessor接口:作用于实例化阶段&初始化阶段的前后。 4).工厂后处理器接口方法:这个包括了AspectJWeavingEnabler, ConfigurationClassPostProcessor, CustomAutowireConfigurer等等非常有用的工厂后处理器接口的方法。工厂后处理器也是容器级的。在应用上下文装配配置文件之后立即调用。
- 扩展点BeanPostProcessor和BeanFactoryPostProcessors的注册时机:在加载Bean前
2.Spring 中的 bean 的作用域有哪些?
- singleton : 唯一 bean 实例,Spring 中的 bean 默认都是单例的。
- prototype : 每次请求都会创建一个新的 bean 实例。
- request : 每一次HTTP请求都会产生一个新的bean,该bean仅在当前HTTP request内有效。
- session : 每一次HTTP请求都会产生一个新的 bean,该bean仅在当前 HTTP session 内有效。