Spring笔记-自动装配注解
技术分享|2020-2-7|最后更新: 2023-9-4
type
status
date
slug
summary
tags
category
icon
password
order
分别是@Primary,@Autowired,@Qualifier,@Resource,@Inject,下面依次介绍

@Autowired

  • @Autowired是Spring自带的注解,通过AutowiredAnnotationBeanPostProcessor类实现的依赖注入
  • @Autowired是根据类型进行自动装配的,如果需要按名称进行装配,则需要配合@Qualifier
  • @Autowired有个属性为required,默认值为true,可以配置为false,如果配置为false之后,当没有找到相应bean的时候,系统不会抛错
  • @Autowired可以作用在变量、setter方法、构造函数上

@Qualifier

  • @Qualifier配合@Autowired,可以指定装配的bean名称

@Inject

  • @Inject是JSR330规范中的注解,和@Autowired用法差不多
  • @Inject可作用在变量、setter方法、构造函数上并且@Qualifier,@Primary对它也同样有效
  • @Inject使用需要导入javax.inject

@Resource

  • @Resource是JSR250规范中的注解,参数为bean的名称

@Primary

  • @Primary当一个接口有多个实现类,你想让自动装配时优先选择某个实现类,在这个类上面加上该注解即可

常见注解

  • @Configuration把一个类作为一个IoC容器,它的某个方法头上如果注册了@Bean,就会作为这个Spring容器中的Bean。
  • @Scope注解 作用域
  • @Lazy(true) 表示延迟初始化
  • @Service用于标注业务层组件、
  • @Controller用于标注控制层组件(如struts中的action)
  • @Repository用于标注数据访问组件,即DAO组件。
  • @Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。
  • @Scope用于指定scope作用域的(用在类上)
  • @PostConstruct用于指定初始化方法(用在方法上)
  • @PreDestory用于指定销毁方法(用在方法上)
  • @Resource 默认按名称装配,当找不到与名称匹配的bean才会按类型装配。
  • @DependsOn:定义Bean初始化及销毁时的顺序
  • @Primary:自动装配时当出现多个Bean候选者时,被注解为@Primary的Bean将作为首选者,否则将抛出异常
  • @Autowired 默认按类型装配,如果我们想使用按名称装配,可以结合@Qualifier注解一起使用
  • @Autowired @Qualifier(“personDaoBean”) 存在多个实例配合使用
 
Spring Boot+MyBatis+Druid多数据源配置Spring笔记-Bean的生命周期