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. 每天一个linux命令:【转载】less命令

    less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大.less 的用法比起 more 更加的有弹性.在 more 的时候,我们并没有办法向前面翻 ...

  2. bzoj 4827 礼物

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

  3. Oracle基础查询

    select * from teacher--女性老师编号.姓名select tno,tname,gendar from teacher where gendar='女'--姓韩的女性老师编号.姓名. ...

  4. cnpm 私服搭建(基于docker)

    备注:   使用docker-compose 进行安装 1. 代码clone git clone https://github.com/cnpm/cnpmjs.org.git 2. docker bu ...

  5. cacti监控linux主机时iptables阻碍了udp161端口造成无法监控解

    由于在添加linux主机时,有防火墙启用,造成无法监控linux主机,现有两种方法解决无法监控linux主机问题:可以通过在监控主机执行该命令: snmpwalk -c public -v 2c 19 ...

  6. Linux环境下安装Websphere8.5.5

    首先安装包资源: https://pan.baidu.com/s/1Jvkqe3WMgNQ3bn3ggYGhAQ 下面是Installation Manager安装包 agent.installer. ...

  7. JDBC 流程

    转载地址:https://blog.csdn.net/suwu150/article/details/52744952 JDBC编程的六个步骤:    准备工作中导入ojdbc文件,然后右键选中添加路 ...

  8. CentOS6.8编译安装LAMP

    CentOS6.8编译安装Apache2.4.25.MySQL5.7.16.PHP5.6.29 初始化 #固定IP vi /etc/sysconfig/network-scripts/ifcfg-et ...

  9. MFC对话框的Edit控件实现响应Ctrl+A全选,并实现自动/手动换行+滚动条

    首先是在Properties中设置控件属性的问题,首先必须得将Mutilines属性设为true,才能支持多行显示. 手动换行(按Enter键换行):将Want Return属性设为true 自动换行 ...

  10. eclipse和myeclipse的he user operation is wating问题

    近做了一个MyEclipse项目,但是没开始多久就发现了这个问题:只要文件被修改过,不论多小的修改,保存的时候都会跳出一个框框,里面写着the user operation is wating.... ...