java是否可以@Lazy init一个Spring@值?
是否可以@Lazy
初始化弹簧@Value
强>
例如
@Lazy
@Value("${someConfig}")
private String someConfig;
我特别提到的场景是一个通过JNDI设置的变量,an embedded Tomcat container, which has some of it's JNDI variables initialised during Spring Boot loading。。。我可以想到的其他场景是您希望JIT变量填充的地方:检索变量“昂贵”,并且您不想影响启动时间,该变量在应用程序启动时不可用,等等
上述代码给出了以下错误:
java.lang.IllegalArgumentException: Cannot subclass final class java.lang.String
我想您可以通过使用^{
后续问题:如果基础变量源发生更改(例如服务器上的JNDI),是否可以/是否可以重新初始化@Value
初始化的变量(无需重新启动应用程序)即重新检索
(我正在尝试最后两种情况)
# 1 楼答案
你可以试试这样的设置。缺点是,它要求使用这个变量的bean也声明为
@Lazy
。