3:ComponentScan
3.1:@ComponentScan注解默认就会装配标识了@Controller,@Service,@Repository,@Configuration,@Component注解的类到spring容器中
@Controller,@Service,@Repository ,@Configuration 这些注解已经被@Component注解修饰
距离举例:@ComponentScan(value="com.draymond") com.draymond.config.BeanConfig
可以指定扫描 includeFilters,excludeFilters,类似maven
3.2:@Scope
@singleton 创建ioc容器的时候就会创建,但只会创建1次
@prototype 多实例 仅当bean使用的时候创建
3.3:@Lazy
懒加载:当使用bean的时候,才会加载(针对单实例bean),容器启动的时候不会加载
IOC就是对bean进行注册、实例化、管理
ComponentScan
备注:没有线程安全的问题使用单实例(线程安全问题会发生在有对象中有属性)
如果不想有的对象不需要直接加载,则可以加上 @Lazy注解
4: FactoryBean 把java实例的bean通过FactoryBean注入到容器
BeanFactory 从容器中获取注入的java实例的beans
5:注入bean的方式
5.1 @Bean (导入第三方的类或包的组件)
5.2 @ComponontScan+@Controller/@Service/@Responsitory/@Componet 包扫描+注解(自己写的类)
5.3 @Import (快速给容器导入组件)
5.3.1
5.4 使用FactoryBean 进行注册 (不好用的方式)
6:bean的生命周期
com.draymond.lifecycle
创建
初始化
销毁