java - 如何在具有私有构造函数的类中使用 @Value 或 autowire Environment?
问题描述
我有一个用例,我正在使用一个实用程序类(包含所有静态方法的类,并且构造函数也是私有的)。因此,我不是在创建类的对象,我只是在使用类名访问方法。所以,在实用程序类中我想访问application.properties
. 但是@Value
自动装配都不起作用Environment
。它总是返回null
。
有没有办法访问application.properties
实用程序类中的字段?我搜索了很多,但我没有找到任何参考资料。
解决方案
这就是静态类和字段的问题。它们的创建不在 Spring 或任何其他依赖注入框架的手中。因此,依赖注入框架不能向其中注入任何价值。
您可以访问 beanManager 并读取值或在初始化 Spring Boot 时初始化您的值。尽管如此,在 Spring 引导初始化过程正在进行时,您的值为 null。
最好使用 Spring 定义一个 Singleton bean @Scope("singleton")
。将您的类更改为普通类并让其生命周期和创建由 Spring 管理,您将更容易测试因为测试静态类并不总是那么容易。
推荐阅读
- javascript - 改变状态和重定向
- postgresql - 如果我已经使用 GIN 索引,如何优化查询
- javascript - 状态更新后 React useEffect 不会重新加载我的组件
- c++ - Rcpp 函数在打包时会导致 RStudio 崩溃
- c# - Linq过滤子类并返回父类?
- ibm-cloud - 无法在 bluemix 上为 cloudant db 创建凭证
- laravel - 如何连接 DocumentDB 和 Laravel
- c - 如何将更改写入结构单链表?
- python - 在多级关系的情况下,如何将 Django 模型对象/查询集作为字典获取?
- php - 如何将数组输入到 INSERT INTO 查询中?