spring注解@Autowired与@Resource

@Autowired
private StringRedisTemplate stringRedisTemplate;

@Resource(name="stringRedisTemplate")
private ValueOperations<String,String> valOpsStr;

@Autowired
private RedisTemplate<Object, Object> redisTemplate;

@Resource(name="redisTemplate")
private ValueOperations<Object,Object> valOps;

在看书时发现了这样的一段代码,就是想问的是,【@Autowired自动注解StringRedisTemplate,但是为什么@Resource注解是利用name属性指定名称时,可以指定stringRedisTemplate】这是什么原理呢,这样的话不就会导致创建相同名称的bean了吗?

阅读 5.7k
1 个回答

@Autowired 如字面意思是自动注入,而@Resource,需要注入一个命名的bean,它们的查找机制不同,@Autowired需要扫描项目,查找相关Bean自动注入,是自动的,无须操心怎么注入。而@Resource需要手动指定一个Bean,如果是spring boot项目,需要配置一个配置文件,用@Bean('xxx')返回命名Bean,如果不是spring boot,那么需要在xml配置。一个自动一个手动,不会产生冲突。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题