在spring boot 项目中 使用 自定义 PropertyPlaceholderConfigurer会造成 @Vaule 无法正常注入,spring boot 已经有一个默认的实现,所以会造成冲突,
在spriing mvc 中可以 使用PropertyPlaceholderConfigurer 来实现静态方法获取配置参数,那在 spring boot 中如何实现呢?
使用 Environment env; 类,这个是spring boot 自带的环境信息获取工具,使用方法如下:
package com.company.project.util; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.env.Environment; import org.springframework.stereotype.Component; import java.io.IOException; import java.util.MissingResourceException; /** * Parsing The Configuration File * * @author ShenHuaJie * @version 2016年7月30日 下午11:41:53 */ @Component public final class PropertiesUtil { public static final byte[] KEY = { 9, -1, 0, 5, 39, 8, 6, 19 }; private static Environment env; @Autowired protected void set(Environment env) throws IOException { PropertiesUtil.env = env; } /** * Get a value based on key , if key does not exist , null is returned * * @param key * @return */ public static String getString(String key) { try { return env.getProperty(key); } catch (MissingResourceException e) { return null; } } /** * Get a value based on key , if key does not exist , null is returned * * @param key * @return */ public static String getString(String key, String defaultValue) { try { String value = env.getProperty(key); if (DataUtil.isEmpty(value)) { return defaultValue; } return value; } catch (MissingResourceException e) { return defaultValue; } } /** * 根据key获取值 * * @param key * @return */ public static int getInt(String key) { return Integer.parseInt(env.getProperty(key)); } /** * 根据key获取值 * * @param key * @param defaultValue * @return */ public static int getInt(String key, int defaultValue) { String value = env.getProperty(key); if (StringUtils.isBlank(value)) { return defaultValue; } return Integer.parseInt(value); } /** * 根据key获取值 * * @param key * @param defaultValue * @return */ public static boolean getBoolean(String key, boolean defaultValue) { String value = env.getProperty(key); if (StringUtils.isBlank(value)) { return defaultValue; } return new Boolean(value); } }