目录
1.组件添加注解
1.1 @Configuration
作用在类上,告诉Spring这是一个配置类。
相当于一个xml配置文件
1.2 @Bean
作用在方法上,告诉Spring这是一个需要管理的Bean,id默认为方法名,也可以在注解内配置value值作为Bean的id。
相当于xml配置文件中的<Bean>标签
1.3 @ComponentScan
开启包扫描,扫描@controller、@Servicer、@Repository、@Compoent注解,可以通过配置excludeFilters和includeFilters来排除或添加注解扫描范围
相当于xml配置文件中的<component-scan>标签
内置Filter拥有五种过滤器配置类型:
- FilterType.ANNOTATIONL:按照注解过滤
- FilterType.ASSIGNABLE_TYPE:按照给定的类型过滤
- FilterType.ASPECTJ:使用ASPECTJ表达式
- FilterType.REGEX:使用正则表达式
- FilterType.CUSTOM:使用自定义规则
1.4 @Scope
作用在类、接口、枚举和方法上,配置Bean的作用范围,有四种设置,常用"singleton"和"prototype"
相当于xml配置文件中的<scope>标签
1.5 @Lazy
配置Bean的懒加载
1.6 @Conditional
作用在类上和方法上,按照条件加载Bean,参数为实现Condition接口的子类,需重写接口中的matches方法,返回true则进行加载,返回false则不进行加载。
1.7 @import
快速导入一个Bean,id为组件的全类名,参数为class数组,导入多个组件
还可以实现importSelector来自定义导入逻辑,需重写selectImports方法,返回值为组件的全类名
2.生命周期注解
2.1 @Bean
可以在Bean注解中配置initMethod和destroyMethod参数,指明容器的初始化方法和销毁方法。
2.2 @PostConstruct
在Bean创建完成并且属性赋值完成后,执行初始化方法
2.3 @PreDestory
在Bean销毁前,执行销毁方法
3.属性赋值注解
3.1 @Value
@Value注解用于给属性赋值,有三种写法
- 基本数值
- SpEL:#{}
- ${}
前两种可以直接写在实体类中,第三种需要配合@PropertySource注解来使用
3.2 @PropertySource
用于将指定配置文件读取进Spring容器
4.自动装配注解
4.1 @Autowired
默认优先按照类型去寻找组件,如果找到多个同类型的组件,再将属性名作为组件的id去容器中查找,相当于调用applicationContext.getBean("Bean名字"),还可以使用@Qualifier指定需要装配的组件id,而不是使用属性名
4.2 @Qualifier
使用@Qualifier精确指定需要装配的组件id,需结合@Autowired一起使用
4.3 @Primary
默认装配首选的Bean,也可以继续使用@Qualifier精确指定需要装备Bean的名字
4.4 @Resource
java规范注解,可以和@Autowired实现一样的效果,默认按照组件名称进行装配,无法支持@Primary和@Autowired(required=false)