繁体   English   中英

如何在具有私有构造函数的 class 中使用 @Value 或 autowire 环境?

[英]How can I use @Value or autowire Environment in a class with private constructor?

我有一个用例,我正在使用实用程序 class(包含所有 static 的方法的类,并且构造函数也是私有的)。 因此,我没有创建 class 的 object,我只是使用 class 名称访问方法。 因此,在实用程序 class 中,我想访问application.properties 但是@Value和自动装配Environment都不起作用。 它总是返回null

有没有办法访问实用程序 class 中的application.properties中的字段? 我搜索了很多,但我没有找到任何参考资料。

这就是 static 类和字段的问题。 它们的创建不在 Spring 或任何其他依赖注入框架的手中。 因此,依赖注入框架不能向其中注入任何价值。

当 spring 启动初始化时,您可以访问 beanManager 并读取值或初始化您的值。 尽管如此,您的值是 null 而 Spring 引导初始化过程正在进行中。

最好使用 Spring @Scope("singleton")定义一个 Singleton bean。 将您的 class 更改为正常的,并让其生命周期和创建由 Spring 管理,您将更容易测试因为测试 static 类并不总是那么容易。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM