鍍金池/ 問答/Java/ spring注解@Autowired與@Resource

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;

在看書時發(fā)現(xiàn)了這樣的一段代碼,就是想問的是,【@Autowired自動注解StringRedisTemplate,但是為什么@Resource注解是利用name屬性指定名稱時,可以指定stringRedisTemplate】這是什么原理呢,這樣的話不就會導致創(chuàng)建相同名稱的bean了嗎?

回答
編輯回答
凹凸曼

@Autowired 如字面意思是自動注入,而@Resource,需要注入一個命名的bean,它們的查找機制不同,@Autowired需要掃描項目,查找相關Bean自動注入,是自動的,無須操心怎么注入。而@Resource需要手動指定一個Bean,如果是spring boot項目,需要配置一個配置文件,用@Bean('xxx')返回命名Bean,如果不是spring boot,那么需要在xml配置。一個自動一個手動,不會產(chǎn)生沖突。

2017年11月19日 11:20