【问题标题】:Injecting github information into Spring bean将github信息注入Spring bean
【发布时间】:2019-06-18 13:06:03
【问题描述】:

我正在尝试从 git hub 中获取价值,它有一个属性文件,比如 abc.properties。我需要从属性文件中读取值并将其注入到 bean 类变量中

【问题讨论】:

    标签: spring-boot spring-boot-actuator


    【解决方案1】:

    您可以使用@PropertySource@Configuration 的组合将任何本地属性文件绑定到bean 的字段中。

    例如:

    @Configuration
    @PropertySource("file:/path/to/abc.properties")
    public class AbcProperties {
    
        private String someProperty;
        private int anotherProperty;
    
        // standard getters and setters
    }
    

    这假定文件位于本地。请注意,@PropertySource 也可以引用类路径相关文件(如果它们在您的项目中)。

    如果您真的想在运行时从 GitHub 远程读取文件,您可能需要自定义 PropertySourcesPlaceholderConfigurer 或考虑使用 Spring Cloud Config 来管理外部配置。

    【讨论】:

    • 我在 baeldang 有一个解决方案,但正在寻找最好的解决方案并且易于理解。我知道它在 spring 云配置服务器中。有没有其他办法
    • 如果您的文件是本地文件,我将使用@PropertySource@Configuration 创建一个包含配置的bean,然后您可以将该配置bean 自动装配到您需要的位置。如果文件是远程文件,我认为您最好的选择是自定义PropertySourcesPlaceholderConfigurer ,它读取远程文件(并处理所有故障场景,如网络超时)以将其加载到 Spring 环境中。
    • 嗨,迈克,propertyplaceholderconfigure 与@propertyResource 相同,对吗?我的问题是......我在 4 年前创建的项目中有一个属性文件,该文件在 git 中上传,现在我需要将它读入一个新的 spring 项目
    • @Kathiresan.N 他们服务于 2 个不同的目的。 PropertySource 用于将外部文件绑定到 bean 的字段中,而 PropertyPlaceholderConfigurer 用于定义在值中找到 ${...} 占位符时解析它们的策略。
    • 嗨 Mike,我明白这一点,但它不能帮助我们从 git 读取文件,为此我们只能使用 spring 云配置服务器。我的问题是我不应该使用这个云配置服务器,而是我必须在 github 现有项目中读取一个属性文件并填充到 bean 中……如果你有示例代码,那将有所帮助。如果你说 @propertySource 请分享工作代码。注意:我应该从 git 存储库中获取现有项目
    猜你喜欢
    • 2012-02-19
    • 2011-05-29
    • 1970-01-01
    • 2023-04-09
    • 2011-09-09
    • 2013-06-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多