Spring 中的 @Autowired 注解的作用?
在Spring框架中,@Autowired
注解用于自动装配Spring Bean。使用这个注解,可以避免在Spring配置文件中手动配置bean之间的依赖关系。
@Autowired
可以用于变量、setter方法和构造函数。Spring容器会在运行时,通过在上下文中寻找并匹配类型来自动为@Autowired
注解的元素提供依赖。
下面是几个使用@Autowired
的例子:
- Field Autowiring(字段注入):
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
//...
}
在这个例子中,Spring会找到一个UserRepository
类型的bean,并自动注入到userRepository
字段。
- Constructor Autowiring(构造函数注入):
@Service
public class UserService {
private final UserRepository userRepository;
@Autowired
public UserService(UserRepository userRepository) {
this.userRepository = userRepository;
}
//...
}
在这个例子中,Spring会找到一个UserRepository
类型的bean,并自动注入到构造函数中。这是推荐的注入方式,因为它可以保证UserService
的所有依赖在构造时就已经被满足,而且这些依赖可以是final
的,保证了不会被修改。
- Method Autowiring(方法注入):
@Service
public class UserService {
private UserRepository userRepository;
@Autowired
public void setUserRepository(UserRepository userRepository) {
this.userRepository = userRepository;
}
//...
}
在这个例子中,Spring会找到一个UserRepository
类型的bean,并自动注入到setUserRepository
方法中。
需要注意的是,从Spring 4.3开始,如果目标bean只有一个带参数的构造函数,那么可以省略@Autowired
注解。