如何加载springboot属性?

时间:2017-08-08 14:34:26

标签: spring-boot properties configuration autowired postconstruct

我试图在springboot应用程序中加载一次属性。

实际上,我已经创建了一个类来执行此操作:

@Configuration
@PropertySource(value = { "classpath:parameters.properties", "classpath:iot.properties" })
public class PropertiesHelper {
    @Autowired
    protected Environment env;

    private static Environment properties;

    @PostConstruct
    public void init() {
        properties = env;
    }

    public static String getProperty(final String propertyName) {
        return properties.getProperty(propertyName);
    }
}

这个类工作正常,但这不是干净的代码(声纳讨厌我的静态变量)。

那么,我怎样才能在springboot应用程序中正确加载所有属性并且只加载一次?

2 个答案:

答案 0 :(得分:0)

let price = product?.price ?? 0

parameters.properties

@PropertySource("classpath:parameters.properties")
@PropertySource("classpath:iot.properties")
public class PropertiesHelper {

@Value( "${Value.you.need}" )
private String valueYouNeed;
}

让它像这样,它应该适用于您的场景。

答案 1 :(得分:0)

优雅的解决方案

如果只是想消除声纳报警(声纳讨厌我的静态变量)

// application.properties
spring.profiles.active=test1010

// IOC config bean container
@Configuration
@Data
public class PropertiesConfig{
    @Value("${spring.profiles.active:preline}")
    private String profiles;
}

//Use
@Autowired
private PropertiesConfig propertiesConfig;

@GetMapping("/getPropertiesConfig")
public String getPropertiesConfig(){
    return propertiesConfig.getProfiles();
}

我觉得上面的方案更优雅~,你有更好的方案吗?