spring引用RedisTemplate两次就创建2个连接吗?-灵析社区

型男不是我还是谁

@Autowired RedisTemplate redisTemplate; @Autowired RedisTemplate redisTemplateString2String; 这样使用是创建1个连接还是2个啊? @Autowired RedisTemplate redisTemplate; @Autowired RedisTemplate redisTemplateString2String; 这样使用是创建1个连接还是2个啊?

阅读量:12

点赞量:0

问AI
AI Bot 的回答不大正确 如果没有定义泛型,Spring 会忽略泛型去找 "RedisTemplate"(因为 "stringRedisTemplate" 和 "redisTemplate" 都是 "RedisTemplate" 的类型实例,Spring 搞不懂你到底需要导入哪个,也就是 歧义引入 ),所以大概率是会报错的: Action: Consider marking one of the beans as @Primary, updating the consumer to accept multiple beans, or using @Qualifier to identify the bean that should be consumed 如果不写泛型又需要引入不同的类型正确的写法如下: @Autowired @Qualifier("redisTemplate") private RedisTemplate redisTemplate; @Autowired // 这个会根据泛型去找stringRedisTemplate private RedisTemplate redisTemplateString2String2; 可以在生成实例时进行测试 @PostConstruct public void checkIfSameInstance() { if (redisTemplate == redisTemplateString2String2) { System.out.println("两者相同"); } else { System.out.println("两者不同"); // 会输出这句 } } 同理,明确一致的类型,则不会重复引入 @Autowired private RedisTemplate redisTemplate; @Autowired // 这个会根据泛型去找stringRedisTemplate private RedisTemplate redisTemplateString2String2; @PostConstruct public void checkIfSameInstance() { if (redisTemplate == redisTemplateString2String2) { System.out.println("两者相同"); // 这时两者实例就一致了,会输出这句 } else { System.out.println("两者不同"); } } «补充相关参考: "@Autowired 官方文档" (https://link.segmentfault.com/?enc=RRVnTPbQEGzFD4%2FYTbpqrA%3D%3D.a5ezSEUsDnsDsbkfzZ1QKD0WUAGURIWag%2BezgCX7OCS6p2X3O7XN8ZzYldBUk5TsFY%2FU5vXDGlrcAWInyNyefQCUzW7v%2Bkcpchdt9Vfbb8ZvosHSYFnd1bZrPB2rjh58) "@Qualifier 官方文档" (https://link.segmentfault.com/?enc=XROi8xdqU%2BXudC2oQguyQA%3D%3D.qvkUYuai8S56r6rgklLUnI5t%2BamhrqxntLofMlrrhCCUNUaxivQf8uBxgEaF1SwzeeIJDC0RUxYc0PgVDX2%2FMO41GB4PV3UpW6blych4VYF02H8CwBJmQaaG36LNPPx%2B)»