Spring-BootSpringBoot极简教程 · Spring Boot Spring Boot

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

2018-02-05  本文已影响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 取到值了。完美。

上一篇下一篇

猜你喜欢

热点阅读