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. iOS8扩展插件开发配置 [转载]

    一.iOS8扩展插件概述 WWDC14除了发布了OS X v10.10和switf外,iOS8.0也开始变得更加开放了.说到开放,当然要数应用扩展(App Extension)了.顾名思义,应用扩展允 ...

  2. javascript 小代码

    if(!("a" in window)){ var a =1; } alert(a); //undefined var a = 1,b=function a (x){ x & ...

  3. java web构建学习(概念基础)

    1.什么是Java Web Application 一个Java web应用程序生成交互式web页面包含各种类型的标记语言(HTML.XML等)和动态内容.它通常由web组件例如JavaServer ...

  4. BZOJ3930 [CQOI2015]选数【莫比乌斯反演】

    Description 我们知道,从区间[L,H](L和H为整数)中选取N个整数,总共有(H-L+1)^N种方案.小z很好奇这样选出的数的最大公约数的规律,他决定对每种方案选出的N个整数都求一次最大公 ...

  5. Codeforces 280C Game on tree【概率DP】

    Codeforces 280C Game on tree LINK 题目大意:给你一棵树,1号节点是根,每次等概率选择没有被染黑的一个节点染黑其所有子树中的节点,问染黑所有节点的期望次数 #inclu ...

  6. Python学习-赋值、浅copy和深copy

    Python Copy: 在Python语言中,分为浅拷贝和深拷贝两种形式,也就是官方文档中的Shadow copy和Deep copy.在对简单的对象(object)进行复制时,两者没有区别,如下面 ...

  7. js禁用后退

    history.pushState(null, null, document.URL);          window.addEventListener('popstate', function() ...

  8. 【java基础】java中Object对象中的Hashcode方法的作用

    以下是关于HashCode的官方文档定义: hashcode方法返回该对象的哈希码值.支持该方法是为哈希表提供一些优点,例如,java.util.Hashtable 提供的哈希表. hashCode  ...

  9. ballerina 学习十六 错误&&异常处理

    ballerina 的error 处理和elxiir 以及rust 比较类似使用模式匹配,但是他的 error lifting 还是比较方便的 同时check 也挺好,异常处理没什么特殊的 throw ...

  10. Mybatis逆向工程配置文件详细介绍(转)

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration ...