欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Parameter 1 of constructor in com.xxx.controller.Xxx required a bean of type

程序员文章站 2022-07-15 13:12:22
...

报错全称

也就是在这个Java类里面的注入的接口需要一个Bean实现,

Parameter 1 of constructor in com.abc.auth.controller.TokenController required a bean of type 'org.springframework.cache.CacheManager' that could not be found.

The following candidates were found but could not be injected:
	- Bean method 'cacheManager' in 'CaffeineCacheConfiguration' not loaded because @ConditionalOnClass did not find required class 'com.github.benmanes.caffeine.cache.Caffeine'
	- Bean method 'cacheManager' in 'EhCacheCacheConfiguration' not loaded because @ConditionalOnClass did not find required class 'net.sf.ehcache.Cache'
	- Bean method 'cacheManager' in 'JCacheCacheConfiguration' not loaded because @ConditionalOnClass did not find required class 'javax.cache.Caching'


Action:

Consider revisiting the entries above or defining a bean of type 'org.springframework.cache.CacheManager' in your configuration.

代码

@RequiredArgsConstructor
public class TokenController {
    @Autowired
    private TokenStore tokenStore;
    //    private RedisTemplate redisTemplate;
//    private CacheManager cacheManager;
    @Autowired
    private final RedisTemplate redisTemplate;
    private final CacheManager cacheManager;

疑似产生的原因

没有找到cacheManager的实现

弯路、坑

分析

cacheManager被final修饰符修饰
@RequiredArgsConstructor的意思是:

Lombok注解 释义
@RequiredArgsConstructor 生成包含常量、标识了NotNull的变量的构造方法。生成的构造方法是私有的private
@NoArgsConstructor 生成无参的构造方法
@AllArgsContructor 生成包含所有属性的构造器

解决方案

1) 去掉final、去掉@RequiredArgsConstructor注解。重启