建议采用@Autowired
@Resource 注解要求提供一个bean名称的属性,若该属性为空,则自动采用标注处的变量或方法名作为Bean的名称
@Inject 和@Autowired注解一样,都是按类型匹配注入,但@Inject没有require属性。
以下为@Autowired详解:
1.@Autowired 标注在属性上, 可以标注在setter方法上,
但默认情况下用了@Autowired标注的bean(java类),要求该bean要放到spring容器中,否则报错。
要是你真想不报错或忽略它的话,必须在用了@Autowired标注的bean(java类),加require=false
2.要是IOC容器中存在多个类型相同的Bean时,通过类型自动匹配装配将无法工作。解决办法:
- (1)@Autowired +@Qualifier(“bean别名”)一起使用 (常用)
- (2)有两个@Repository或@Service的实现类都是继承同一个Bean接口,但其中后面定义了名字(定义名字会自动把类型的大写开头变先写匹配上的) @Repository(“userRepository”) 或@Service(“userService”)
后面使用@Autowired private UserRepository userRepository 会自动根据名称匹配上。
3.@Autowired 注解数组,集合,map 类型是,会把所有符合类型的都自动装配进去。