首页 > 解决方案 > 如何在具有私有构造函数的类中使用 @Value 或 autowire Environment?

问题描述

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

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

标签: javaspringspring-boot

解决方案


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

您可以访问 beanManager 并读取值或在初始化 Spring Boot 时初始化您的值。尽管如此,在 Spring 引导初始化过程正在进行时,您的值为 null。

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


推荐阅读