1.問題描述 在redis整合springcache的時候一直報錯。 按照信息找的發生問題的部分:
@Configuration
@EnableCaching
public class RedisConfig { @Primary @Bean public CacheManager cacheManager ( RedisConnectionFactory redisConnectionFactory
) { RedisCacheConfiguration redisCacheConfiguration
= RedisCacheConfiguration . defaultCacheConfig ( ) ; redisCacheConfiguration
= redisCacheConfiguration
. entryTtl ( Duration . ofMinutes ( 30L ) ) . disableCachingNullValues ( ) . serializeKeysWith ( RedisSerializationContext. SerializationPair . fromSerializer ( keySerializer ( ) ) ) . serializeValuesWith ( RedisSerializationContext. SerializationPair . fromSerializer ( valueSerializer ( ) ) ) ; return RedisCacheManager . builder ( RedisCacheWriter . nonLockingRedisCacheWriter ( redisConnectionFactory
) ) . cacheDefaults ( redisCacheConfiguration
) . build ( ) ; } private RedisSerializer < String > keySerializer ( ) { return new StringRedisSerializer ( ) ; } 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
. entryTtl ( Duration . ofMinutes ( 30L ) ) . disableCachingNullValues ( ) . serializeKeysWith ( RedisSerializationContext. SerializationPair . fromSerializer ( keySerializer ( ) ) ) . serializeValuesWith ( RedisSerializationContext. SerializationPair . fromSerializer ( valueSerializer ( ) ) ) ; return RedisCacheManager . builder ( RedisCacheWriter . nonLockingRedisCacheWriter ( redisConnectionFactory
) ) . cacheDefaults ( redisCacheConfiguration
) . build ( ) ; } private RedisSerializer < String > keySerializer ( ) { return new StringRedisSerializer ( ) ; } private RedisSerializer < Object > valueSerializer ( ) { return new GenericJackson2JsonRedisSerializer ( ) ; } }
@Configuration
@EnableSwagger2
public class SwaggerConfig { @Value ( value
= "true" ) private Boolean swaggerEnabled
; @Bean public 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" } )
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
輸入地址: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 的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網站內容還不錯,歡迎將生活随笔 推薦給好友。