当前位置: 首页 > 知识库问答 >
问题:

如何在带有私有构造函数的类中使用@value或autowire环境?

卓俊晖
2023-03-14

我有一个用例,其中我正在使用一个实用程序类(类中包含的方法都是静态的,构造函数也是私有的)。因此,我不是在创建类的对象,我只是在访问具有类名的方法。因此,在utility类中,我希望访问application.properties。但是@value和自动environment都不起作用。它总是返回null

是否有方法访问实用工具类中的application.properties中的字段?我找了很多,但没有找到任何参考资料。

共有1个答案

从景曜
2023-03-14

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

您可以访问beanManager并读取值或在spring boot初始化时对值进行post初始化。但是,当Spring Boot初始化过程正在进行时,您的值仍然为null。

更好的方法是使用Spring@scope(“Singleton”)定义一个单例bean。将您的类更改为一个普通类,并让它的生命周期和创建由Spring管理,您将使测试更容易,因为测试静态类并不总是容易的。

 类似资料:
  • 问题内容: 假设我们有以下代码: 当我们创建一个对象时,该对象最初称为父类构造函数。但是就像私人的一样- 我们收到一个错误。一个好的例子和解决这个问题的方法是多少? 问题答案: 没有出路。你必须创建一个可用的(,或默认)的超级构造函数能够延长。 这种表示法通常用于实用程序类或单例中,在这种情况下,您不希望用户通过扩展实例和实例化子类,或者只是通过调用类的构造函数来自己创建类的实例。 当您只有一个具

  • 问题内容: 在Java中,在抽象类中使用私有构造函数的目的是什么? 在一个评论中,我得到了这个问题,我很好奇,在什么情况下我们需要以这种方式使用构造函数? 我认为它可以与抽象类中的另一个构造函数一起使用,但这非常简单。它也可以用于构造将超过抽象类的静态内部类。 也许还有更优雅的用法? 问题答案: 如果构造函数是类的 唯一 构造函数,则原因很明确:防止子类化。一些类仅充当静态字段/方法的持有者,而不

  • 我有一个java类,它只有静态方法和字段,所以我不想为此创建任何对象。我可以从两个方面来理解, 创建类摘要 使用私有构造函数。 这两种方法哪一种更好?

  • 我正在重构一个越来越大的android项目。运行lint使我能够在外部类和内部类之间访问JSME问题私有成员。考虑下面的例子 我得到消息了 应用问题解决方案会将源更改为 我现在有点困惑。直到现在,我还以为这个例子相当于 在这种情况下,我错了吗?还是这是棉绒的问题?

  • 我有一个带有私有构造函数的单例类,我想为此编写单元测试。 如何使用mockito框架模拟具有私有构造函数的类。 谢谢

  • 问题内容: 这更多的是 困惑而 不是问题。我有以下代码: 即使基类构造函数为,在这里也允许对1 * 的调用。如果我们在同一包中将这些类编写为单独的类: 编译器正确地在2 *处给出了错误,因为基类构造函数不可见。 当两个类在一个类中都声明为静态时,为什么编译器没有在我的第一种情况下引发错误? 问题答案: 如果成员或构造函数被声明为私有,则仅当访问发生在包含成员或构造函数的声明的顶级类(第7.6节)的