spring注解
@Configuration
声明类是一个配置类,用来代替xml文件,并将类加入ioc容器中
@Bean
给容器中注册一个Bean, 类型为返回值的类型,id默认是方法名作为id
value = 配置Bean的id名字
@Bean标注的方法创建对象的时候,方法参数的值从容器中获取
@ComponentScan
包扫描,只要标注了@Controller @Service @Repository @Component注解的类都会被扫描到
value = 指定要扫描的包
excludeFilters = Filter数组 通过配置Filter来排除不需要扫描的类
includeFilters = Filter数组 通过配置Filter来指定只需要扫描的类(需要禁用掉默认的扫描规则才会生效)
useDefaultFilters = boolean 是否使用默认的扫描规则,默认是true
Filter可以按照以下类型过滤
FilterType.ANNOTATION 按照注解过滤
FilterType.ASSIGNABLE_TYPE 按给定的类型过滤
FilterType.ASPECTJ 使用aspectj表达式过滤
FilterType.REGEX 使用正则表达式
FilterType.CUSTOM 使用自定义规则
@Scope
声明注册的bean是单例的还是多例的,singleton单实例,prototype多实例
singleton 默认值,ioc容器启动会调用方法创建对象放到ioc容器中,以后每次获取就是从容器中拿
prototype ioc容器启动并不会去调用方法创建对象在容器中,每次获取的时候才会调用方法创建对象
@Lazy
只能用在单实例bean
懒加载:容器启动不创建对象,第一次使用(获取)Bean时才创建对象,并初始化
@Conditional
按照一定的条件进行判断,只有满足条件才会将bean注册到ioc容器中
需要将实现了Condition接口的类传入
放在方法上代表只对一个bean生效
放在类上代表对这个类下的所有bean都生效