java - 自动装配的存储库为空
问题描述
我正在尝试在名为CacheManager的类中使用存储库。此存储库应从表中获取所有行。尽管使用了@Autowired 注释,它还是为空。我在哪里失踪?谢谢。
存储库
@Repository
public interface FraudCacheListRepository extends CrudRepository<FraudCacheListEntity,Integer> {
List<FraudCacheListEntity> findAll();
}
缓存管理器
@Component
public class CacheManager {
private long second = 1000L;
private long minute = second * 60;
private long hour = minute * 60;
private long TTL = hour;
@Autowired
private FraudCacheListRepository fraudCacheListRepository;
public CacheManager() {
getAllTables();
}
private void getAllTables(){
List<FraudCacheListEntity> fraudCacheListEntities = fraudCacheListRepository.findAll();
for (FraudCacheListEntity entity:fraudCacheListEntities) {
System.out.println(entity.toString());
}
}
}
核心控制器
@Component
@Configurable
public class CoreController {
public ComController com;
@Autowired
private CacheManager cacheManager;
public CoreController() {
com = new ComController();
}
}
MAIN - 休息控制器
@RestController
public class FraudRestController {
@Autowired
private CoreController core;
}
解决方案
由于您使用过private CoreController core = new CoreController();
,CoreController 和 CacheManager 不是 Spring 托管的 bean,因此不会发生依赖注入。
更新
我建议你这种方法:
@Component
public class CacheManager {
private long second = 1000L;
private long minute = second * 60;
private long hour = minute * 60;
private long TTL = hour;
@Autowired
private FraudCacheListRepository fraudCacheListRepository;
@PostConstruct
public void getAllTables(){
List<FraudCacheListEntity> fraudCacheListEntities = fraudCacheListRepository.findAll();
for (FraudCacheListEntity entity:fraudCacheListEntities) {
System.out.println(entity.toString());
}
}
}
它不适合您的原因是在注入发生之前调用了构造函数。注解指示 Spring在bean 完全初始化后@PostConstruct
调用getAllTables
方法。
推荐阅读
- python - 无法在同一目录和包中导入模块
- java - “java.io.FileNotFoundException:没有文件匹配规范”虽然文件已成功写入
- linux - 我的 Vncserver 设置有什么问题?
- java - 定义单例与在接口中声明
- ios - 如何修复 Xcode 10 中的小部件库,因为它在选择一个小部件 ios 后隐藏起来
- javascript - 缺少)在脚本管理器的参数列表错误之后
- ios - 如何删除左 UIBarButtonItem 的填充?
- javascript - 如何将原始数据主体添加到 axios 请求?
- jetty - 码头空闲超时异常
- artifactory - 人工可信存储库已损坏