常见spring注解及其意义

  1. 基本类型Bean的注入:
  2. @Configuration
  3. @Bean (联合@Scope使用,引入单实例与多实例)
  4. 单实例在IOC容器启动之后就会放入
  5. 多实例不会
  6. @Conditional 根据条件创建BeanSpring底层大量使用)能写到方法或者类上,都可以
  7. @Import 给容器中快速导入一个组件,直接可以进行导入
  8. 1@Import(加入要导入的组件)
  9. 2@Import(ImportSelector) 返回需要导入的所有的bean的全类名 继承ImportSelector类,重写selectImports方法,返回所有的全类名
  10. 3@Import(ImportBeanDefinitionRegistrar)
  11. 通过FactoryBean工厂Bean实现注入
  12. Bean实例的注入:
  13. @Controller
  14. @Component
  15. @Service
  16. @Repository
  17. 配置类模式注入
  18. @Configuration
  19. @ComponentScan(value = "路径"), 另外ComponentScan中通过@Filter注解实现制定类型的扫描

FactoryBean和BeanFactory的使用

  1. public class ColorFactoryBean implements FactoryBean<Color> {
  2. @Override
  3. public Color getObject() throws Exception {
  4. return new Color("blue");
  5. }
  6. @Override
  7. public Class<?> getObjectType() {
  8. return Color.class;
  9. }
  10. @Override
  11. public boolean isSingleton() {
  12. return false;
  13. }
  14. }

springboot自动配置原理

  1. @Import
  2. @Conditional
  3. @EnableAutoConfiguration
  4. @ApplicationConfiguration

Bean生命周期

  1. 单实例:创建容器的时候就会创建对象,随后进行初始化
  2. 多实例:需要使用时创建bean,并且不会随着容器关闭而销毁
  3. @Bean(init="",destroy="") 通过bean注解初始化以及销毁的方法
  4. @PostConstruct bean创建完成并属性赋值完成之后,执行初始化方法 (作用于init()方法上)
  5. @PreDestroy 关闭容器之前执行的方法
  6. BeanPostProcessor 用于在bean初始化前后处理的操作(该为一个接口,通过实现接口中的方法来控制初始化前后处理)
  7. 很多spring底层实现都依赖去实现该接口(包括ApplicationContextAware

属性赋值

  1. @Value 属性装配
  2. @Primary 为装配增加优先级