No qualifying bean of type 'org.springframework.data.redis.core.RedisTemplate' available: expected single matching bean but found 2: redisTemplate,stringRedisTemplate org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'org.springframework.data.redis.core.RedisTemplate' available: expected single matching bean but found 2: redisTemplate,stringRedisTemplate不通过注入redisTemplate怎么解决这个错误,注意是不通过注入的方式
时间: 2023-09-28 16:05:28 浏览: 73
org.springframework.transaction-3.2.4.RELEASE.jar
5星 · 资源好评率100%
如果不想通过注入的方式注入RedisTemplate,可以使用Spring的ApplicationContext来手动获取RedisTemplate实例。
示例代码如下:
```java
public class DataPermissionUtils {
/**
* 获取用户对应的数据权限 传userUid表示获取指定用户的,不传则获取全部的
*
* @param userUid
* @return
*/
public static List<DataPermissionSchemaEo> getDataPermissionsRedis(String userUid) {
ApplicationContext applicationContext = SpringContextUtils.getApplicationContext();
RedisTemplate redisTemplate = applicationContext.getBean("redisTemplate", RedisTemplate.class);
Object redisResult = StringUtils.isEmpty(userUid) ?
redisTemplate.opsForValue().get(SystemsConstant.DATA_PERMISSION_SCHEMA)
: redisTemplate.opsForValue().get(SystemsConstant.DATA_PERMISSION_SCHEMA + userUid);
return StringUtils.isEmpty(redisResult.toString()) ?
Collections.emptyList()
: JSONObject.parseArray(redisResult.toString(), DataPermissionSchemaEo.class);
}
}
```
在示例代码中,使用SpringContextUtils.getApplicationContext()方法获取ApplicationContext实例,然后通过getBean()方法获取名为"redisTemplate"的RedisTemplate实例。这样就可以手动获取RedisTemplate实例,避免了没有指定使用哪个RedisTemplate实例的问题。需要注意的是,在使用SpringContextUtils.getApplicationContext()方法前,需要确保Spring容器已经初始化完成。
阅读全文