【问题标题】:How to inject a property from properties file to a non-managed class in Spring?如何将属性文件中的属性注入 Spring 中的非托管类?
【发布时间】:2019-12-01 09:21:06
【问题描述】:

我想为一个不受 Spring 管理的类设置一个属性。实际情况如下:我有一个正则表达式,我想将其外部化到属性文件中。到目前为止,我尝试创建一个CommandLineRunner,并从属性文件中读取并将正则表达式设置为我想要的任何字段。但我想知道是否有一种开箱即用的方法。

【问题讨论】:

    标签: java spring spring-boot properties-file


    【解决方案1】:

    您可以执行以下操作之一:

    1. 使该类成为“普通”Java 类,其中正则表达式由使用它的 Spring 托管类通过构造函数或方法参数传入。
    2. 为类提供一个静态字段“regex”(可能带有默认值),该字段由 Spring bean 在启动时通过 setter 设置 (@PostConstruct)。
    3. 为类提供一个静态字段“正则表达式”(可能带有默认值),该字段使用从属性文件读取的类中的static 块进行设置(如果它在类路径中可用!)。
    4. 使类成为在 Spring 启动时初始化的“普通”单例(可能具有默认值) (https://www.baeldung.com/running-setup-logic-on-startup-in-spring)

    【讨论】:

    • 感谢您的回复。我喜欢 2. 一。一个问题。 1.和我已经尝试过的有什么区别吗?另外,为什么这些都是比我已经做过的更好的选择?我只是好奇。
    • 我猜在做事的技术方式上只有微小的差异,但没有重大差异。我个人最喜欢 1,因为我个人喜欢通过构造函数初始化类而无需任何额外操作。
    猜你喜欢
    • 2014-05-27
    • 1970-01-01
    • 2016-10-16
    • 1970-01-01
    • 2014-02-17
    • 2012-06-29
    • 1970-01-01
    • 1970-01-01
    • 2020-02-07
    相关资源
    最近更新 更多