美文网首页Spring-BootSpringBoot极简教程 · Spring Boot Spring Boot
spring boot 自定义配置文件读取值不使用@Value

spring boot 自定义配置文件读取值不使用@Value

作者: 阿波罗程序猿 | 来源:发表于2018-02-05 15:31 被阅读2543次

    试想下,如果一个配置文件里面有30多个的配置项,那么一个个读取写@Value将是多么费劲的一件事儿。今天我们就要解决这个麻烦的问题。

    spring-boot Version: 1.5.4.RELEASE
    

    假如我想使用SDKConfig.FRONT_TRANS_URL来获取配置项的值该怎么做?先看个例子,改造银联提供的SDK代码,这里缩减篇幅,他们提供的配置项有很多...

    // 绑定配置项的前缀
    @ConfigurationProperties(prefix = "acpsdk")
    // 添加自定义配置文件
    @PropertySource(value = "classpath:pay/acp_sdk.properties")
    public class SDKConfig {
        // 由于 Spring 不允许把值注入到静态变量中所以这里使用 @Value 是不起效果的
        /**
         * 配置文件中的前台URL常量
         */
        public static String FRONT_TRANS_URL;
        /**
         * 配置文件中的后台URL常量
         */
        public static String BACK_TRANS_URL;
    
        // 手动定义一个静态的 PropertySourcesPlaceholderConfigurer。
        // 它的作用是解析 @Value 中的 ${} ,如果没有这个 bean ,将取不到配置项的值。
        @Bean
        public static PropertySourcesPlaceholderConfigurer propertyConfigures() {
            return new PropertySourcesPlaceholderConfigurer();
        }
    
        // 注入配置项的值
        public void setFrontTransUrl(String frontTransUrl) {
            FRONT_TRANS_URL = frontTransUrl;
        }
    
        public void setBackTransUrl(String backTransUrl) {
            BACK_TRANS_URL = backTransUrl;
        }
    }
    

    使用SDKConfig.FRONT_TRANS_URL; OK 取到值了。完美。

    相关文章

      网友评论

        本文标题:spring boot 自定义配置文件读取值不使用@Value

        本文链接:https://www.haomeiwen.com/subject/tmpbzxtx.html