日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Error creating bean with name ‘redisConnectionFactory‘ defined in class path resource

發布時間:2024/9/30 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Error creating bean with name ‘redisConnectionFactory‘ defined in class path resource 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.問題描述
在redis整合springcache的時候一直報錯。

按照信息找的發生問題的部分:

@Configuration @EnableCaching public class RedisConfig {@Primary@Bean//@ConditionalOnBean(RedisConnectionFactory.class)public CacheManager cacheManager(RedisConnectionFactory redisConnectionFactory){RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig();redisCacheConfiguration = redisCacheConfiguration//設置緩存的默認超時時間:30分鐘.entryTtl(Duration.ofMinutes(30L))//如果是空值,不緩存.disableCachingNullValues()//設置key序列化器.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(keySerializer()))//設置value序列化器.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(valueSerializer()));return RedisCacheManager.builder(RedisCacheWriter.nonLockingRedisCacheWriter(redisConnectionFactory)).cacheDefaults(redisCacheConfiguration).build();}/*** key序列化器*/private RedisSerializer<String> keySerializer() {return new StringRedisSerializer();}/*** value序列化器*/private RedisSerializer<Object> valueSerializer() {return new GenericJackson2JsonRedisSerializer();}}

如果加上一句
@ConditionalOnBean(RedisConnectionFactory.class)
報錯信息變為:

Error creating bean with name ‘redisConnectionFactory’ defined in class path resource [org/springframework/boot/autoconfigure/data/redis/LettuceConnectionConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory]: Factory method ‘redisConnectionFactory’ threw exception; nested exception is java.lang.NoClassDefFoundError: org/apache/commons/pool2/impl/GenericObjectPoolConfig

發現在pom.xml中連接池依賴包沒有導:

<!--spring cache連接池依賴包--><dependency><groupId>org.apache.commons</groupId><artifactId>commons-pool2</artifactId><version>2.6.2</version></dependency>

再次啟動:

成功了。。。what a fuck…折騰了一小時
2.自己的配置代碼:

@Configuration @EnableCaching public class RedisConfig {@Primary@Bean @ConditionalOnBean(RedisConnectionFactory.class)public CacheManager cacheManager(RedisConnectionFactory redisConnectionFactory){RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig();redisCacheConfiguration = redisCacheConfiguration//設置緩存的默認超時時間:30分鐘.entryTtl(Duration.ofMinutes(30L))//如果是空值,不緩存.disableCachingNullValues()//設置key序列化器.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(keySerializer()))//設置value序列化器.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(valueSerializer()));return RedisCacheManager.builder(RedisCacheWriter.nonLockingRedisCacheWriter(redisConnectionFactory)).cacheDefaults(redisCacheConfiguration).build();}/*** key序列化器*/private RedisSerializer<String> keySerializer() {return new StringRedisSerializer();}/*** value序列化器*/private RedisSerializer<Object> valueSerializer() {return new GenericJackson2JsonRedisSerializer();}} @Configuration @EnableSwagger2 public class SwaggerConfig {@Value(value = "true")private Boolean swaggerEnabled;@Beanpublic Docket createRestApi() {return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).enable(swaggerEnabled).select().apis(RequestHandlerSelectors.basePackage("com.example.rediscache.springcache")).paths(PathSelectors.any()).build();}private ApiInfo apiInfo() {return new ApiInfoBuilder().title("接口文檔").description("Spring Boot整合redis自動生成緩存").termsOfServiceUrl("https:XXXX")//自己設置.version("1.0").build();} } @SpringBootApplication @MapperScan(basePackages = {"com.example.rediscache.springcache.mapper"})//指定要掃描的Mapper類的包的路徑 public class SpringcacheApplication {public static void main(String[] args) {SpringApplication.run(SpringcacheApplication.class, args);}} server.port=9090 spring.redis.host=localhost # Redis\u670D\u52A1\u5668\u8FDE\u63A5\u7AEF\u53E3 spring.redis.port=6379 # Redis\u670D\u52A1\u5668\u8FDE\u63A5\u5BC6\u7801\uFF08\u9ED8\u8BA4\u4E3A\u7A7A\uFF09 # spring.redis.password=123 # \u8FDE\u63A5\u6C60\u6700\u5927\u8FDE\u63A5\u6570\uFF08\u4F7F\u7528\u8D1F\u503C\u8868\u793A\u6CA1\u6709\u9650\u5236\uFF09 \u9ED8\u8BA4 8 spring.redis.lettuce.pool.max-active=8 # \u8FDE\u63A5\u6C60\u6700\u5927\u963B\u585E\u7B49\u5F85\u65F6\u95F4\uFF08\u4F7F\u7528\u8D1F\u503C\u8868\u793A\u6CA1\u6709\u9650\u5236\uFF09 \u9ED8\u8BA4 -1 spring.redis.lettuce.pool.max-wait=-1 # \u8FDE\u63A5\u6C60\u4E2D\u7684\u6700\u5927\u7A7A\u95F2\u8FDE\u63A5 \u9ED8\u8BA4 8 spring.redis.lettuce.pool.max-idle=8 # \u8FDE\u63A5\u6C60\u4E2D\u7684\u6700\u5C0F\u7A7A\u95F2\u8FDE\u63A5 \u9ED8\u8BA4 0 spring.redis.lettuce.pool.min-idle=0 mybatis.mapper-locations=classpath*:com/example/rediscache/springcache/mapper/xml/*.xml

輸入地址:http://localhost:9090/swagger-ui.html

自己的代碼目錄:

總結 注意幾個要點
mapperscan的路徑要對(在配置文件中要寫mybatis-mapper的掃描路徑,springbootapplicaiton類上面要寫@MapperScan(basePackages = {“com.example.rediscache.springcache.mapper”})//指定要掃描的Mapper類的包的路徑
使用redis一定要注意redis的配置和mysql的配置(端口號和ip要對,有密碼要配密碼,redis的conf中可以修改bind 0.0.0.0, 就是用來允許任意計算機都可以連接redis服務連接。
如果bind設置為:bind 127.0.0.1,只有本臺主機可以連接到redis,

總結

以上是生活随笔為你收集整理的Error creating bean with name ‘redisConnectionFactory‘ defined in class path resource的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。