@Autowired 装配规则
时间: 2023-07-19 16:22:33 浏览: 58
@Autowired 是 Spring 自动装配的核心注解之一,用于自动装配 Bean 对象。其装配规则如下:
1. 首先按照类型进行匹配,如果容器中有且只有一个类型匹配时,则将其注入。
2. 如果存在多个类型匹配,则继续按照名称进行匹配,如果存在与属性名称相同的 Bean,则将其注入。
3. 如果仍然无法匹配,则会抛出 NoUniqueBeanDefinitionException 异常。
需要注意的是,如果要使用 @Autowired 进行自动装配,被注入的 Bean 必须在 Spring 容器中注册,可以通过 @Component、@Service、@Repository 等注解将其注册到容器中。同时,被注入的属性不能是 final 类型的。
如果存在多个 Bean 满足条件,可以使用 @Qualifier 注解指定需要注入的 Bean。例如:
```java
@Autowired
@Qualifier("userDaoImpl")
private UserDao userDao;
```
其中,@Qualifier("userDaoImpl") 指定了需要注入的 Bean 的名称为 "userDaoImpl"。
相关问题
Spring自动bean装配注解@Autowired的匹配规则
@Autowired注解是Spring自动装配的核心注解之一,它可以自动装配被注解的bean。在使用@Autowired注解时,Spring会根据以下规则匹配bean:
1. 根据类型匹配:Spring会查找与被注入属性的类型相匹配的bean,并将其注入。
2. 根据名称匹配:如果有多个与被注入属性类型相匹配的bean,则会根据属性名作为bean的名称进行匹配,找到对应的bean注入。
3. @Qualifier注解匹配:如果有多个与被注入属性类型相匹配的bean,并且使用了@Qualifier注解指定了bean的名称,则会根据@Qualifier指定的名称进行匹配。
4. @Primary注解匹配:如果有多个与被注入属性类型相匹配的bean,并且使用了@Primary注解标注了其中一个bean,则会优先注入@Primary标注的bean。
需要注意的是,如果无法匹配到任何一个bean,则会抛出异常。而如果想要允许属性为null,可以使用@Autowired(required=false)注解。
SpringBoot中@Autowired使用
在SpringBoot中,@Autowired注解用于自动装配依赖关系。通过在需要依赖的属性或者方法上添加@Autowired注解,Spring框架会根据指定的规则为其自动注入对应的Bean对象。具体来说,@Autowired注解可以用在类的属性上,也可以用在方法的参数上。当SpringBoot项目运行时,如果发现被@Autowired注解描述的属性或方法参数,Spring会根据指定的规则自动为其赋值(DI)。
在一个SpringBoot应用程序中,通常需要将包含所有类的主应用程序类标记为@ComponentScan,并将basePackages参数设置为要扫描的包。这样,Spring框架将能够对这些类进行托管,并且@Autowired注解才会生效。同时,还可以通过@Configuration注解创建一个配置类,类似于以前的XML配置文件,在配置类中使用@ComponentScan注解指定要加入到Spring容器中的类。
总结起来,SpringBoot中的@Autowired注解用于实现依赖注入,需要将主应用程序类标记为@ComponentScan,并在配置类中使用@Autowired注解来自动注入依赖关系。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>