+-

是否有可能@Lazy初始化一个 Spring @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
我想你可以通过使用@ConfigurationProperties bean来实现延迟加载的变量?
后续问题:如果更改了基础变量源(例如服务器上的JNDI),是否可以/将重新初始化@ Value-initialised变量(不重启应用程序)?即重新检索
(我正在尝试最后两个场景)
最佳答案
你可以尝试这样的设置.缺点是它要求使用此变量的bean也声明为@Lazy.
@Bean(name = "myVar")
@Lazy
String foo(@Value("${someConfig}") String someConfig) {
return someConfig;
}
@Component
@Lazy
class SomeComponent {
@Autowired
@Qualifier("myVar")
String myVar;
}
点击查看更多相关文章
转载注明原文:java – @Lazy是否可以初始化一个Spring @Value? - 乐贴网