Java 应用程序启动后初始化Springbean字段
当应用程序启动时,我的spring boot应用程序需要将一些数据作为缓存从数据库加载到bean的字段中,我所做的是作为代码执行Java 应用程序启动后初始化Springbean字段,java,spring-boot,caching,Java,Spring Boot,Caching,当应用程序启动时,我的spring boot应用程序需要将一些数据作为缓存从数据库加载到bean的字段中,我所做的是作为代码执行 @组件 公共类FooCache{ 私有存储库; 私有静态列表foos; 公共FooCache(FooRepository存储库){ this.repository=存储库; } @事件监听器 ApplicationEvent(ContextRefreshedEvent事件)上的公共无效{ foos=repository.findAll(); } } 问题是 是否保
@组件
公共类FooCache{
私有存储库;
私有静态列表foos;
公共FooCache(FooRepository存储库){
this.repository=存储库;
}
@事件监听器
ApplicationEvent(ContextRefreshedEvent事件)上的公共无效{
foos=repository.findAll();
}
}
问题是
- 是否保证在调用应用程序事件之前正确初始化数据库连接池
- 是否保证在应用程序处理用户请求之前初始化
foos
- 这是设置应用程序缓存的正确方式吗?是否有其他最佳实践可以实现这一点?(我的意思是在应用程序上缓存数据库中的数据)
@SpringBootApplication
公共类CarServiceApplication{
public static void main(String[] args) {
SpringApplication.run(CarServiceApplication.class, args);
}
@Bean
ApplicationRunner init(CarRepository repository) {
return args -> {
Stream.of("Ferrari", "Jaguar", "Porsche", "Lamborghini", "Bugatti",
"AMC Gremlin", "Triumph Stag", "Ford Pinto", "Yugo GV").forEach(name -> {
repository.save(new Car(name));
});
repository.findAll().forEach(System.out::println);
};
}
}第二个保证对Meth也很重要。该方法可以帮助您在应用程序开始时初始化对象