常见spring注解及其意义
基本类型Bean的注入:
@Configuration
@Bean (联合@Scope使用,引入单实例与多实例)
单实例在IOC容器启动之后就会放入
多实例不会
@Conditional 根据条件创建Bean(Spring底层大量使用)能写到方法或者类上,都可以
@Import 给容器中快速导入一个组件,直接可以进行导入
1、@Import(加入要导入的组件)
2、@Import(ImportSelector) 返回需要导入的所有的bean的全类名 继承ImportSelector类,重写selectImports方法,返回所有的全类名
3、@Import(ImportBeanDefinitionRegistrar)
通过FactoryBean工厂Bean实现注入
Bean实例的注入:
@Controller
@Component
@Service
@Repository
配置类模式注入
@Configuration
@ComponentScan(value = "路径"), 另外ComponentScan中通过@Filter注解实现制定类型的扫描
FactoryBean和BeanFactory的使用
public class ColorFactoryBean implements FactoryBean<Color> {
@Override
public Color getObject() throws Exception {
return new Color("blue");
}
@Override
public Class<?> getObjectType() {
return Color.class;
}
@Override
public boolean isSingleton() {
return false;
}
}
springboot自动配置原理
@Import
@Conditional
@EnableAutoConfiguration
@ApplicationConfiguration
Bean生命周期
单实例:创建容器的时候就会创建对象,随后进行初始化
多实例:需要使用时创建bean,并且不会随着容器关闭而销毁
@Bean(init="",destroy="") 通过bean注解初始化以及销毁的方法
@PostConstruct 在bean创建完成并属性赋值完成之后,执行初始化方法 (作用于init()方法上)
@PreDestroy 关闭容器之前执行的方法
BeanPostProcessor 用于在bean初始化前后处理的操作(该为一个接口,通过实现接口中的方法来控制初始化前后处理)
很多spring底层实现都依赖去实现该接口(包括ApplicationContextAware)
属性赋值
@Value 属性装配
@Primary 为装配增加优先级