Spring详解(二)------注解配置IOC
@Configuration:告诉Spring这是一个配置类
@Bean("person")-->作用于方法:给容器中注册一个Bean;类型为返回值的类型
@ComponentScans:配置要一组扫描的包的包扫描器
@ComponentScan:配置要扫描的包的包扫描器
//excludeFilters = Filter[] :指定扫描的时候按照什么规则排除那些组件 //includeFilters = Filter[] :指定扫描的时候只需要包含哪些组件 //FilterType.ANNOTATION:按照注解 //FilterType.ASSIGNABLE_TYPE:按照给定的类型; //FilterType.ASPECTJ:使用ASPECTJ表达式 //FilterType.REGEX:使用正则指定 //FilterType.CUSTOM:使用自定义规则
@Scope:配置bean的作用域
//prototype:多实例的:获取的时候才会调用方法创建对象,IOC容器启动时不会调用 //singleton:单实例的(默认值):ioc容器启动会调用方法创建对象放到ioc容器中。 //request:同一次请求创建一个实例 //session:同一个session创建一个实例
@Lazy:作用于单例bean,容器启动不创建对象。第一次使用Bean初始化;
@Conditional({Condition}) : 按照一定的条件进行判断,满足则在容器中注册
//spring框架还提供了很多@Condition给我们用,当然总结用语哪种好理解,看给位读者喽 @ConditionalOnBean(仅仅在当前上下文中存在某个对象时,才会实例化一Bean) @ConditionalOnClass(某个class位于类路径上,才会实例化一个Bean) @ConditionalOnExpression(当表达式为true的时候,才会实例化一个Bean) @ConditionalOnMissingBean(仅仅在当前上下文中不存在某个对象时,才会实例化一个Bean) @ConditionalOnMissingClass(某个class类路径上不存在的时候,才会实例化一个Bean) @ConditionalOnNotWebApplication(不是web应用)
条件必须继承Condition接口,实现过滤的的方法
@Import(要导入到容器中的组件);容器中就会自动注册这个组件,id默认是全类名
ImportSelector:返回需要导入的组件的全类名数组;
ImportBeanDefinitionRegistrar:手动注册bean到容器中