常见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 为装配增加优先级