目前有这样一个需求:
容器启动的时候,用Listener在数据库中读取一部分参数数据作为缓存。
本人现在遇到的问题是:Spring容器在进行初始化的时候,有的类需要注入这些缓存参数,但是缓存的Listener启动是在Spring之后的。所以启动的时候就会报错。但是假如把缓存的Listener提前到Spring启动之前,那么缓存的Listener中的数据库就连接不上了。使用
容器启动的时候,用Listener在数据库中读取一部分参数数据作为缓存。
本人现在遇到的问题是:Spring容器在进行初始化的时候,有的类需要注入这些缓存参数,但是缓存的Listener启动是在Spring之后的。所以启动的时候就会报错。但是假如把缓存的Listener提前到Spring启动之前,那么缓存的Listener中的数据库就连接不上了。使用
WebApplicationContextUtils.getRequiredWebApplicationContext
也会报错。
问一下这个该怎么处理?
以下是本人的部分代码
配置文件部分
....................... <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- 缓存远程地址参数 --> <listener> <listener-class>com.tdt.ts.management.service.listener.CacheRemoteConfListener</listener-class> </listener> ..............................
有一个controller注入一个Service时,需要这个缓存参数。就是这样
class clotroller{ @Autowrite Test test; } // 这个Test需要缓存参数 class Test { static{ // 使用缓存参数 } }
解决方案
40
试试对Test做 lazy-init 看能否解决问题