【通过StringRedisTemplate来理解@Resource与@Autowired的区别】

通过StringRedisTemplate来理解@Resource与@Autowired的区别

一、两者的字面区别:

1、@Autowired 按byType自动注入
2、@Resource 按byName自动注入

二、要求【ValueOperations opsForValue = redisTemplate.opsForValue();】

1、指定redis存储的键、值都是字符串类型,考虑使用StringRedisTemplate来替代RedisTemplate,RedisTemplate默认存储的是Object类型。
2、因为需要指定键、值都为String类型,可以有如下几种方式(注入的类型为StringRedisTemplate):
(1)、通过byType自动注入
@Autowired
private StringRedisTemplate redisTemplate;
(2)、指定键值为
@Resource
private RedisTemplate redisTemplate;
(3)、 通过byName自动注入,名称为变量名
@Resource
private StringRedisTemplate stringRedisTemplate;
(4)、通过byName自动注入,指定注入的名称
@Resource(name = “stringRedisTemplate”)
private StringRedisTemplate redisTemplate;
3、说明
(1)、编辑器建议使用@Resource进行注解
(2)、@Resource是通过byName自动注入的,名称必需正确(对应的类必需存在、类型必需正确)
4、错误举例(接上面需求)
(1)、默认名称为变量名称,注入的实际类型为(RedisTemplate)
@Resource
private StringRedisTemplate redisTemplate;

你可能感兴趣的:(@Resource,@Autowired,redis,缓存,java)