Spring Properties 文件读取

本文节选自《Netkiller Java 手札》

12.7. Properties

12.7.1. 载入*.properties文件

	@RequestMapping("/config")
	@ResponseBody
	public void config() {
		try {
			Properties properties = PropertiesLoaderUtils.loadProperties(new ClassPathResource("/config.properties"));
			for(String key : properties.stringPropertyNames()) {
				  String value = properties.getProperty(key);
				  System.out.println(key + " => " + value);
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}	

12.7.2. @Value 注解

application.properties

server.name=Linux
server.host=192.168.0.1,172.16.0.1			
	@Value("${server.name}")
	private String name;
	
	@Value("${server.name:Windows}") 如果application.properties没有配置server.name那么默认值将是 Windows
	private String name;
	
	@Value("${app.name:@null}") // app.name = null
 	private String name;
 	
 	@Value("#{'${server.host}'.split(',')}") 
 	private List<String> host; 			

12.7.3. @PropertySource 注解

			@PropertySource("classpath:/config.properties}")	

忽略FileNotFoundException,当配置文件不存在系统抛出FileNotFoundException并终止程序运行,ignoreResourceNotFound=true 会跳过使程序能够正常运行
@PropertySource(value="classpath:config.properties", ignoreResourceNotFound=true)		

载入多个配置文件
@PropertySources({  
        @PropertySource("classpath:config.properties"),  
        @PropertySource("classpath:db.properties")  
})  

test.properties

name=Neo
age=30			
			package cn.netkiller.web;

import java.util.Date;

import javax.servlet.http.HttpSession;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@PropertySource("classpath:test.properties")
public class TestController {
	
	@Autowired
	Environment environment;
	
	@Value("${age}")
	private String age;

	public TestController() {
		// TODO Auto-generated constructor stub
	}
	
	// 环境变量方式
	@RequestMapping("/test/env")
	@ResponseBody
	public String env() {
		String message = environment.getProperty("name");
		return message;
	}
	
	@RequestMapping("/test/age")
	@ResponseBody
	public String age() {
		String message = age;
		return message;
	}

}

原文发布于微信公众号 - Netkiller(netkiller-ebook)

原文发表时间:2016-10-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小筱月

controller层中,参数的获取方式以及作用域的问题

1303
来自专栏编程坑太多

JAVA实现Excel导入导出

2113
来自专栏Ryan Miao

spring-boot - demo

当我发现把最初的一个demo整的面目全非的时候,突然想要找一个简单的demo做测试,发现与其在原来的上面该,还不如新建一个demo。 官方入门:http://p...

35911
来自专栏Ryan Miao

SpringMVC中@RequestBody引起的400异常处理,返回校验失败具体信息

问题 使用@RequestBody接收一个json数据的时候,如果传入的参数不符合条件,就会直接返回400的error page. 但究竟是为什么会400并没有...

4577
来自专栏Android 研究

Android跨进程通信IPC之10——Binder之Framework层Java篇

Binder在framework层,采用JNI技术来调用native(C/C++)层的binder架构,从而为上层应用程序提供服务。看过binder之前的文章,...

2352
来自专栏Hongten

Hibernate 过滤器

通过调用Session对象的setFilter()和enableFilter()方法使用过滤器。

882
来自专栏智能计算时代

Instant Messaging at LinkedIn: Scaling to 10000 of Connections

We recently introduced Instant Messaging on LinkedIn, complete with typing indic...

2835
来自专栏Hongten

使用拦截器实现审计日志

import org.apache.log4j.Logger; import org.hibernate.EmptyInterceptor; import or...

1921
来自专栏SpringBoot

springboot + jpa + redis + hibernate validator + 后台抽象

项目码云地址:https://gitee.com/DencyCheng/admin-api

1511
来自专栏pangguoming

在Spring MVC中使用注解的方式校验RequestParams

2144

扫码关注云+社区