Spring自动装配(Auto Wiring)是指在Spring容器初始化Bean时,自动将符合条件的Bean自动注入到需要的Bean中去,从而实现Bean之间的依赖关系自动注入的功能。
Spring自动装配提供了三种方式:
-
通过在属性上添加@AutoWired注解,将符合类型的Bean自动注入到属性中。
@Component public class MyService { @Autowired private MyRepository myRepository; }
-
通过构造函数上添加@Autowired注解,将符合类型的Bean自动注入到构造函数中。
@Component public class MyService { private MyRepository myRepository; @Autowired public MyService(MyRepository myRepository) { this.myRepository = myRepository } }
-
通过在属性上添加@Qualifier注解,指定名称匹配的Bean自动注入到属性中。
@Component public class MyService { @Autowired @Qualifier("myRepositoryImpl") private MyRepository myRepository; }
在使用自动装配时,需要注意以下几点:
- AutoWired默认是按照类型注入Bean的,如果存在多个相同类型的Bean,需要使用@Qualifier注解指定具体哪一个Bean。
- 如果使用构造函数方式来注入Bean,需要保证构造函数的参数与注入的Bean类型一致且只有一个,否则容器无法确定需要注入哪个Bean。
- 自动装配会在容器启动时自动完成,如果Bean的依赖关系发生变化,需要重新启动容器才能生效。
- 自动装配并不是万能的,在某些场景下,手动注入Bean可能会更为灵活和方便。