Spring读取Properties配置文件
一、application.properties 配置文件
①:用Spring容器获取Environment变量,然后getProperty获取到配置的value
ConfigurableEnvironment environment = context.getEnvironment();
String name = environment.getProperty("name");
②:@Value注解
使用@Value("${key}"
③:@ConfigurationProperties
@ConfigurationProperties注解有一个prefix属性,通过指定的前缀,绑定配置文件中的配置,如:
@Component @ConfigurationProperties(prefix = "global.jdbc") public class GlobalProperties { private String url; private String driver; private String username; private String password; ...getter/setter }
二、自定义properties 配置文件
①:@PropertySource + @Value("${key}")
@PropertySource :使用@PropertySource读取外部配置文件中的k/v保存到运行的环境变量Environment中;
如:@PropertySource("classpath:mysql.properties")
取值方式:
①:使用@Value("${key}"
②:也可以用Spring容器获取Environment变量,然后getProperty获取到配置的value
ConfigurableEnvironment environment = context.getEnvironment();
String name = environment.getProperty("name");
②:自行直接读取配置文件的值并缓存
public final class PropertiesUtil {
private static final Logger LOGGER = LoggerFactory.getLogger(PropertiesUtil.class);
private PropertiesUtil() {
}
private static final Properties PROPERTIES = readProperties(
"config.properties",
"mysql.properties",
"redis.properties",
"mongo.properties",
"talos.properties"
);
private static Properties readProperties(String... confFile) {
final Properties properties = new Properties();
try {
for (String path : confFile) {
final ClassPathResource resource = new ClassPathResource(path);
if (resource.exists()) {
properties.load(new InputStreamReader(resource.getInputStream(), StandardCharsets.UTF_8));
}
}
} catch (IOException e) {
LOGGER.error(e.getMessage(), e);
}
return properties;
}
public static String get(String key) {
return PROPERTIES.getProperty(key);
}
}
END.