1.      使用@Value

@Value("${swagger.enable}")

使用Spring的PropertyPlaceholderConfigurer关联 @Value

方法一:使用xml配置PropertyPlaceholderConfigurer,使用@ContextConfiguration导入配置文件

package com.properties.value;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import lombok.extern.slf4j.Slf4j; //方法一:使用xml配置PropertyPlaceholderConfigurer,使用@ContextConfiguration导入配置文件
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationCtx.xml")
@Slf4j
public class ValueUsage1 {
@Value("${username}")
private String uname; @Value("${password}")
private String pwd; @Test
public void test(){
log.info("username:"+uname);
log.info("password:"+pwd);
}
}
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<!-- 对于读取一个配置文件采取的方案 -->
<property name="location" value="classpath:cfg.properties"></property> <!-- 对于读取两个以上配置文件采取的处理方案 -->
<!--
<property name="locations">
<list>
<value>classpath:cfg.properties</value>
<value>classpath:cfg2.properties</value>
</list>
</property>
-->
</bean>
</beans>
username=jay
password=123 env=${pom.env}
ver=${pom.ver}

方法二:使用@Bean实例化PropertySourcesPlaceholderConfigurer,@PropertySources导入资源

package com.properties.value;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

//方法二:使用@Bean实例化PropertySourcesPlaceholderConfigurer,@PropertySources导入资源
public class ValueUsage2 {
public static void main(String[] args) {
AnnotationConfigApplicationContext annotationConfigApplicationContext = new AnnotationConfigApplicationContext(PropertiesWithJavaConfig.class); FileService service = (FileService) annotationConfigApplicationContext.getBean("fileService"); service.readValues();
annotationConfigApplicationContext.close();
}
}
package com.properties.value;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.context.annotation.PropertySources;
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer; @Configuration
@PropertySources({ @PropertySource(value = "classpath:cfg.properties", ignoreResourceNotFound = true),
@PropertySource(value = "classpath:application.properties", ignoreResourceNotFound = true) }) //==> @PropertySource("file:${app.home}/app.properties") file指向绝对路径 @ComponentScan(basePackages = "com.properties.value")
public class PropertiesWithJavaConfig {
//要想使用@Value 用${}占位符注入属性,这个bean是必须的,这个就是占位bean,另一种方式是不用value直接用Envirment变量直接getProperty('key')
@Bean
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}
}
#springfox.documentation.swagger.v2.path=/api-docs
#server.contextPath=/v2
server.port=8080 swagger.enable=true jdbc.driverClassName = com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql://localhost:3306/websystique
jdbc.username = myuser
jdbc.password = mypassword
hibernate.dialect = org.hibernate.dialect.MySQLDialect
hibernate.show_sql = false
hibernate.format_sql = false
sourceLocation =/dev/input
destination =c\:/temp/output
username=jay
password=123 env=${pom.env}
ver=${pom.ver}

2.      使用Environment

@Autowired

private Environment environment;

environment.getProperty("swagger.enable")

方法一:@Inject或者@Autowired一个Environment对象

package com.properties.environment;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

//方法一:@Inject或者@Autowired一个Environment对象
public class EnvironmentUsage1 {
public static void main(String[] args) {
AnnotationConfigApplicationContext annotationConfigApplicationContext = new AnnotationConfigApplicationContext(PropertiesWithJavaConfig.class); FileService service = (FileService) annotationConfigApplicationContext.getBean("fileService"); service.readValues();
annotationConfigApplicationContext.close();
}
}
package com.properties.environment;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource; @Configuration
@PropertySource(value = { "classpath:cfg.properties", "classpath:application.properties" })
@ComponentScan(basePackages = "com.properties.environment")
public class PropertiesWithJavaConfig { }
package com.properties.environment;

public interface FileService {
public void readValues();
}
package com.properties.environment;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Service; @Service("fileService")
public class FileServiceImpl implements FileService {
@Autowired
private Environment environment; public void readValues() {
System.out.println("Getting property via Spring Environment :" + environment.getProperty("jdbc.driverClassName")); System.out.println("Source Location : " + environment.getProperty("sourceLocation"));
System.out.println("Destination Location : " + environment.getProperty("destination"));
}
}
#springfox.documentation.swagger.v2.path=/api-docs
#server.contextPath=/v2
server.port=8080 swagger.enable=true jdbc.driverClassName = com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql://localhost:3306/websystique
jdbc.username = myuser
jdbc.password = mypassword
hibernate.dialect = org.hibernate.dialect.MySQLDialect
hibernate.show_sql = false
hibernate.format_sql = false
sourceLocation =/dev/input
destination =c\:/temp/output
username=jay
password=123 env=${pom.env}
ver=${pom.ver}

方法二:实现EnvironmentAware接口

package com.properties.environment;

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.core.env.Environment; //方法二:实现EnvironmentAware接口
@ComponentScan(basePackages = "com.properties.environment")
@SpringBootApplication
public class EnvironmentUsage2 {
public static void main(String[] args) {
AnnotationConfigApplicationContext annotationConfigApplicationContext = new AnnotationConfigApplicationContext();
annotationConfigApplicationContext.register(EnvironmentBean.class);
annotationConfigApplicationContext.refresh(); Environment environment = annotationConfigApplicationContext.getBean("environment2",Environment.class); System.out.println("Getting property via Spring Environment :" + environment.getProperty("jdbc.driverClassName"));
System.out.println("Source Location : " + environment.getProperty("sourceLocation"));
System.out.println("Destination Location : " + environment.getProperty("destination")); annotationConfigApplicationContext.close();
}
}
package com.properties.environment;

import org.springframework.context.EnvironmentAware;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment; @Configuration
@PropertySource(value = { "classpath:cfg.properties", "classpath:application.properties" })
public class EnvironmentBean implements EnvironmentAware {
private Environment environment2; @Override
public void setEnvironment(Environment environment) {
this.environment2=environment;
} @Bean(name="environment2")
public Environment readEnvironment() {
return environment2;
}
}
#springfox.documentation.swagger.v2.path=/api-docs
#server.contextPath=/v2
server.port=8080 swagger.enable=true jdbc.driverClassName = com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql://localhost:3306/websystique
jdbc.username = myuser
jdbc.password = mypassword
hibernate.dialect = org.hibernate.dialect.MySQLDialect
hibernate.show_sql = false
hibernate.format_sql = false
sourceLocation =/dev/input
destination =c\:/temp/output
username=jay
password=123 env=${pom.env}
ver=${pom.ver}

3.      pom中

<properties>

<springfox.version>2.8.0</springfox.version>

</properties>

<dependency>

<groupId>io.springfox</groupId>

<artifactId>springfox-swagger-ui</artifactId>

<version>${springfox.version}</version>

</dependency>

4.      使用system.load properties

java.util.Properties

package com.properties.util;

import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Properties; public class PropertiesUsage {
public static void main(String[] args) throws Exception {
Properties properties = new Properties();
try (InputStream resourceAsStream = PropertiesUsage.class.getClassLoader().getResourceAsStream("application.properties");
InputStreamReader inputStreamReader = new InputStreamReader(resourceAsStream,"UTF-8");){ properties.load(inputStreamReader); System.out.println(properties.getProperty("hibernate.dialect"));
}
}
}

5. commons-configuration

package com.properties.util;

import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap; import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;
import org.apache.commons.configuration.reloading.FileChangedReloadingStrategy;
import org.apache.commons.lang.StringUtils; import lombok.extern.slf4j.Slf4j; @Slf4j
public class PropertiesConfigUtil {
public static final String PROPS_SUFFIX = ".properties";
private static Map<String, PropertiesConfiguration> configMap = new ConcurrentHashMap<String, PropertiesConfiguration>(); private static PropertiesConfiguration getConfig(String configName) {
// 去除空格
configName = configName.trim();
// 有后缀使用后缀 没后缀 添加后缀
String configSig = StringUtils.endsWith(configName, PROPS_SUFFIX) ? configName : configName + PROPS_SUFFIX;
if (configMap.containsKey(configSig)) {
return configMap.get(configSig);
}
PropertiesConfiguration config = null;
try {
config = new PropertiesConfiguration();
config.setEncoding("UTF-8");
config.load(configSig); // 默认五秒检查一次
config.setReloadingStrategy(new FileChangedReloadingStrategy());
config.setThrowExceptionOnMissing(true); configMap.put(configSig, config);
} catch (ConfigurationException e) {
e.printStackTrace();
} return config;
} public static Map<String, String> getKeyValuePairs(String configSig) {
PropertiesConfiguration config = getConfig(configSig);
if (config == null) {
return null;
}
Iterator<String> iters = config.getKeys();
Map<String, String> retMap = new HashMap<String, String>();
while (iters.hasNext()) {
String beforeKey = iters.next();
if (retMap.containsKey(beforeKey)) {
log.warn(configSig + " configKey:" + beforeKey + " repeated!!");
}
retMap.put(beforeKey, config.getString(beforeKey));
}
return retMap;
} /**
* 通过PropertiesConfiguration取得参数的方法
* <p>
*
* @return 。
*/
static public String getString(String configSig, String key) {
return getConfig(configSig).getString(key);
} static public String getString(String configSig, String key, String defaultValue) {
return getConfig(configSig).getString(key, defaultValue);
} static public int getInt(String configSig, String key) {
return getConfig(configSig).getInt(key);
} static public int getInt(String configSig, String key, int defaultValue) {
return getConfig(configSig).getInt(key, defaultValue);
} static public boolean getBoolean(String configSig, String key) {
return getConfig(configSig).getBoolean(key);
} static public boolean getBoolean(String configSig, String key, boolean defaultValue) {
return getConfig(configSig).getBoolean(key, defaultValue);
} static public double getDouble(String configSig, String key) {
return getConfig(configSig).getDouble(key);
} static public double getDouble(String configSig, String key, double defaultValue) {
return getConfig(configSig).getDouble(key, defaultValue);
} static public float getFloat(String configSig, String key) {
return getConfig(configSig).getFloat(key);
} static public float getFloat(String configSig, String key, float defaultValue) {
return getConfig(configSig).getFloat(key, defaultValue);
} static public long getLong(String configSig, String key) {
return getConfig(configSig).getLong(key);
} static public long getLong(String configSig, String key, long defaultValue) {
return getConfig(configSig).getLong(key, defaultValue);
} static public short getShort(String configSig, String key) {
return getConfig(configSig).getShort(key);
} static public short getShort(String configSig, String key, short defaultValue) {
return getConfig(configSig).getShort(key, defaultValue);
} static public List<Object> getList(String configSig, String key) {
return getConfig(configSig).getList(key);
} static public List<Object> getList(String configSig, String key, List<Object> defaultValue) {
return getConfig(configSig).getList(key, defaultValue);
} static public byte getByte(String configSig, String key) {
return getConfig(configSig).getByte(key);
} static public byte getByte(String configSig, String key, byte defaultValue) {
return getConfig(configSig).getByte(key, defaultValue);
} static public String[] getStringArray(String configSig, String key) {
return getConfig(configSig).getStringArray(key);
}
}
package com.properties.util;

public class PropertiesConfigurationTest {
public static void main(String[] args) {
System.out.println(PropertiesConfigUtil.getString("application.properties", "hibernate.dialect"));
}
}
#springfox.documentation.swagger.v2.path=/api-docs
#server.contextPath=/v2
server.port=8080 swagger.enable=true jdbc.driverClassName = com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql://localhost:3306/websystique
jdbc.username = myuser
jdbc.password = mypassword
hibernate.dialect = org.hibernate.dialect.MySQLDialect
hibernate.show_sql = false
hibernate.format_sql = false
sourceLocation =/dev/input
destination =c\:/temp/output

6. @ConfigurationProperties将properties导入到类中

package com.properties.configurationProperties;

import org.apache.commons.lang.builder.ReflectionToStringBuilder;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.ConfigurableApplicationContext; /*@EnableConfigurationProperties注解是用来开启对@ConfigurationProperties注解配置Bean的支持。
也就是@EnableConfigurationProperties注解告诉Spring Boot 使能支持@ConfigurationProperties*/
/*@ConfigurationProperties注解和@EnableConfigurationProperties配合使用*/ @SpringBootApplication
@EnableConfigurationProperties
public class DemoApplication { public static void main(String[] args) {
try(ConfigurableApplicationContext configurableApplicationContext = SpringApplication.run(DemoApplication.class, args);){
RedisProps redisProps = configurableApplicationContext.getBean(RedisProps.class); System.out.println(ReflectionToStringBuilder.toString(redisProps));
}
}
}
package com.properties.configurationProperties;

import java.util.List;
import java.util.Map; import javax.validation.constraints.NotNull; import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component; import lombok.Data; @Component
@PropertySource("classpath:application.yml")
@Configuration
@ConfigurationProperties(prefix = "spring.redis")
@Data
public class RedisProps {
private int dbIndex;
@NotNull
private String hostname;
private String password;
@NotNull
private int port;
private long timeout;
private List<Map<String, String>> poolConfig;
}
spring:
redis:
dbIndex: 0
hostName: 192.168.58.133
password: nmamtf
port: 6379
timeout: 0
poolConfig:
- maxIdle: 8
- minIdle: 0
- maxActive: 8
- maxWait: -1

7. 使用第三方jar,比如Archaius

获取properties配置的更多相关文章

  1. 获取.properties配置文件属性值

    public class TestProperties { /** * * @Title: printAllProperty * @Description: 输出所有配置信息 * @param pro ...

  2. 如何快速获取properties中的配置属性值

    本文为博主原创,未经博主允许,不得转载: 在项目中,经常需要将一些配置的常量信息放到properties文件中,这样在项目的配置变动的时候,只需要修改配置文件中 对应的配置常量即可. 在项目应用中,如 ...

  3. @Value 注解获取properties值

    转自:使用Spring 3的@value简化配置文件的读取 Spring 3支持@value注解的方式获取properties文件中的配置值,大简化了读取配置文件的代码. 1.在application ...

  4. [坑]Spring利用注解@Value获取properties属性为null

    今天在项目中想使用@Value来获取Springboot中properties中属性值. 场景:定义了一个工具类,想要获取一些配置参数,使用了@value来获取,但是死活也获取不到. 如何解决:在使用 ...

  5. Spring利用注解@Value获取properties属性为null

    今天在项目中想使用@Value来获取Springboot中properties中属性值. 场景:定义了一个工具类,想要获取一些配置参数,使用了@value来获取,但是死活也获取不到. 如何解决:在使用 ...

  6. SpringBoot利用注解@Value获取properties属性为null

    参考:https://www.cnblogs.com/zacky31/p/8609990.html 今天在项目中想使用@Value来获取Springboot中properties中属性值. 场景:定义 ...

  7. Struts2学习:Action获取properties文件的值

    配置文件路径: 配置内容: 方法一: Action内被调用的函数添加下段代码: Properties props = new Properties(); props.load(UploadFileAc ...

  8. spring 通过@Value 获取properties文件中设置了属性 ,与@Value # 和$的区别

    spring 获取 properties的值方法 在spring.xml中配置 很奇怪的是,在context-param 加载的spring.xml 不能使用 ${xxx} 必须交给Dispatche ...

  9. Spring在代码中获取properties文件属性

    这里介绍两种在代码中获取properties文件属性的方法. 使用@Value注解获取properties文件属性: 1.因为在下面要用到Spring的<util />配置,所以,首先要在 ...

随机推荐

  1. 在notepad++中插件安装的办法

    在notepad++中插件安装的办法新版的notepad++去掉了一个叫做插件管理工具的插件.这就导致我们不能通过界面去安装notepad++的一些比较方便的插件了.本文通过手动安装插件管理工具和ft ...

  2. apue 2ed 和 unp 3ed 环境配置

    网上虽然有很多配置攻略,但是依然会一头雾水,下面记录我的配置过程. OS. Ubuntu 10.04 LTS 5 首先下载APUE源代码(http://www.apuebook.com/src.tar ...

  3. HDU3833 YY's new problem 卡时间第一题

    Given a permutation P of 1 to N, YY wants to know whether there exists such three elements P[i 1], P ...

  4. JPA级联(一对一 一对多 多对多)注解【实际项目中摘取的】并非自己实际应用

    下面把项目中的用户类中有个:一对一  一对多  多对多的注解对应关系列取出来用于学习      说明:项目运行正常 问题类:一对多.一对一.多对多 ============一对多 一方的设置 @One ...

  5. bzoj 4827 礼物

    bzoj 4827 礼物 可以看做将其中一个数列(假定为 \(a\) )都加上 \(c\) , \(c\) 可以为负数.易知这里 \(-m\leq c\leq m\). 记要求的答案为 \(ans\) ...

  6. 使用 Emit 生成 IL 代码

    .NET Core/.NET Framework 的 System.Reflection.Emit 命名空间为我们提供了动态生成 IL 代码的能力.利用这项能力,我们能够在运行时生成一段代码/一个方法 ...

  7. 2017-2018-2 20165222实验四《Android程序设计》实验报告

    Android Stuidio的安装测试: 参考<Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)>第二十四章: - 参考http: ...

  8. Jitsi 开源视频会议远程桌面共享&&文档共享工具

    1. 特点 主要功能特点: 支持网络视频会议,使用SFU模式实现视频路由器功能. 支持SIP帐号注册电话呼叫. 支持安卓苹果终端. 支持文档共享功能,即时消息功能. 支持中文界面. 支持会议邀请,密码 ...

  9. consul 几个方便使用的类库

    consul 几个方便使用的类库 1. java  https://github.com/OrbitzWorldwide/consul-client   <dependency> < ...

  10. 系列文章--一步一步学Silverlight2

    概述 由TerryLee编写的<Silverlight 2完美征程>一书,已经上市,在该系列文章的基础上补充了大量的内容,敬请关注.官方网站:http://www.dotneteye.cn ...