【spring boot】SpringBoot初学(2) - properties配置和读取
前言
只是简单的properties配置学习,修改部分“约定”改为自定义“配置”。真正使用和遇到问题是在细看。
一、主要
核心只是demo中的: @PropertySource(value = "classpath:/config/custom.properties", ignoreResourceNotFound = true)
二、demo

// application 注解
@Configuration
@ComponentScan
@EnableAutoConfiguration
@PropertySource(value = "classpath:/config/custom.properties", ignoreResourceNotFound = true)
// Controller 注解
@Controller
public class PropertiesController {
@Value("${CONSTANT_PASSWORD}")
private String password; @Autowired
private ConfigBean configBean; @RequestMapping("/custom")
public String custom(@RequestParam(value="name", required=false, defaultValue="${CONSTANT_USER}") String name
, Model model) {
model.addAttribute("name", name);
model.addAttribute("password", password);
System.out.println(configBean);
return "custom";
} public static void main(String[] args) {
SpringApplication.run(PropertiesController.class, args);
}
}
config/custom.properties
## 常量配置
CONSTANT_USER=vergiyln
CONSTANT_PASSWORD=中文123 ## thymeleaf 配置
spring.thymeleaf.prefix=classpath:/templates/properties/
spring.thymeleaf.suffix=.html
spring.thymeleaf.mode=HTML5
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.content-type=text/html
# set to false for hot refresh
spring.thymeleaf.cache=false
config/ConfigBean.properties 注入bean配置(日期暂时不知道怎么注入)
vergilyn.map[blog]=http://www.cnblogs.com/VergiLyn/
vergilyn.map[name]=VergiLyn
vergilyn.map[remark]=备注,中文23333 vergilyn.list[0]=Carpenters
vergilyn.list[1]=Celine Dion
vergilyn.list[2]=Bon Jovi
vergilyn.list[3]=Taylor Swift vergilyn.str=string
vergilyn.num=124
vergilyn.date=2017-01-14 23:55:19
vergilyn.isSuccess=false
properties对应的JavaBean
@Configuration
// prefix = value,看源码
@ConfigurationProperties(prefix = "vergilyn")
@PropertySource("classpath:config/ConfigBean.properties")
@Component
public class ConfigBean implements Serializable{
private String str; private Integer num; // 注意:要是setIsSuccess(),不能是setSuccess() private boolean isSuccess;
// 日期不知道怎么注入// private Date date; private Map<String, String> map; private List<String> list; public String getStr() {
return str;
} public void setStr(String str) {
this.str = str;
} public Integer getNum() {
return num;
} public void setNum(Integer num) {
this.num = num;
} public Map<String, String> getMap() {
return map;
} public void setMap(Map<String, String> map) {
this.map = map;
} public List<String> getList() {
return list;
} public void setList(List<String> list) {
this.list = list;
} public Boolean isSuccess() {
return isSuccess;
} public void setIsSuccess(Boolean success) {
isSuccess = success;
}
}
custom.html
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>测试properties</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<p th:text="'user: ' + ${name}" />
<p th:text="'password: ' + ${password}" />
</body>
</html>
测试结果:


二、扩展
1、idea中注入properties中文乱码。
起初,我以为需要*.properties或者*.xml或者别的什么配置中要配置编码,但发现并不是。
参考:Springboot 之 解决IDEA读取properties配置文件的中文乱码问题

2、注入属性类型。
如demo,基本上string、int是可以的,不用多余的配置。但测试date并不知道怎么注入。
特别需要注意的是isSuccess;生成的set是setSuccess(),但properties中确实isSuccess导致注入失败。
3、@ConfigurationProperties中可以设置前缀
Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ConfigurationProperties {
    @AliasFor("prefix")
    String value() default "";
    @AliasFor("value")
    String prefix() default "";
    boolean ignoreInvalidFields() default false;
    boolean ignoreNestedProperties() default false;
    boolean ignoreUnknownFields() default true;
    boolean exceptionIfInvalid() default true;
    /** @deprecated */
    @Deprecated
    String[] locations() default {};
    /** @deprecated */
    @Deprecated
    boolean merge() default true;
}
如源码,可以看出prefix与value是一样的。
4、thymeleaf 表达式、方言
${...}:变量表达式;
*{...}:选择变量表达式;
#{...}:消息表达式;
@{...}:链接url表达式
有待了解,现在还不清楚具体是什么、如何使用、什么时候用。
参考:
5分钟了解Thymeleaf的标准方言(Standard dialects)
附录
【spring boot】SpringBoot初学(2) - properties配置和读取的更多相关文章
- Spring Boot项目简单上手+swagger配置+项目发布(可能是史上最详细的)
		
Spring Boot项目简单上手+swagger配置 1.项目实践 项目结构图 项目整体分为四部分:1.source code 2.sql-mapper 3.application.properti ...
 - Spring Boot 的配置文件application.properties
		
Spring Boot 中的application.properties 是一个全局的配置文件,放在src/main/resources 目录下或者类路径的/config下. 作为全局配置文件的app ...
 - Spring boot运行原理-自定义自动配置类
		
在前面SpringBoot的文章中介绍了SpringBoot的基本配置,今天我们将给大家讲一讲SpringBoot的运行原理,然后根据原理我们自定义一个starter pom. 本章对于后续继续学习S ...
 - Spring Boot加载application.properties配置文件顺序规则
		
SpringApplication会从以下路径加载所有的application.properties文件: 1.file:./config/(当前目录下的config文件夹) 2.file:./(当前 ...
 - Spring Boot应用的后台运行配置
		
酱油一篇,整理一下关于Spring Boot后台运行的一些配置方式.在介绍后台运行配置之前,我们先回顾一下Spring Boot应用的几种运行方式: 运行Spring Boot的应用主类 使用Mave ...
 - Spring Boot 启动(二) 配置详解
		
Spring Boot 启动(二) 配置详解 Spring 系列目录(https://www.cnblogs.com/binarylei/p/10198698.html) Spring Boot 配置 ...
 - spring boot中的约定优于配置
		
Spring Boot并不是一个全新的框架,而是将已有的Spring组件整合起来. Spring Boot可以说是遵循约定优于配置这个理念产生的.它的特点是简单.快速和便捷. 既然遵循约定优于配置,则 ...
 - JAR(Spring Boot)应用的后台运行配置
		
酱油一篇,整理一下关于Spring Boot后台运行的一些配置方式.在介绍后台运行配置之前,我们先回顾一下Spring Boot应用的几种运行方式: 运行Spring Boot的应用主类 使用Mave ...
 - Spring Boot应用的后台运行配置(转载)
		
作者:程序猿DD 酱油一篇,整理一下关于Spring Boot后台运行的一些配置方式.在介绍后台运行配置之前,我们先回顾一下Spring Boot应用的几种运行方式: 运行Spring Boot的应用 ...
 - [转]Spring Boot应用的后台运行配置
		
转自:http://blog.didispace.com/spring-boot-run-backend/ 酱油一篇,整理一下关于Spring Boot后台运行的一些配置方式.在介绍后台运行配置之前, ...
 
随机推荐
- ural 1353. Milliard Vasya's Function(背包/递归深搜)
			
1353. Milliard Vasya's Function Time limit: 1.0 second Memory limit: 64 MB Vasya is the beginning ma ...
 - iOS image caching. Libraries benchmark (SDWebImage vs FastImageCache)
			
http://www.cocoachina.com/ios/20150128/11053.html 1.引言 过去的几年里,iOS应用在视觉方面越来越吸引人.图像展示是其中很关键的部分,因为大部分图像 ...
 - 设计模式--静态工厂设计模式在android中的使用
			
今天看到这篇文章:http://www.androiddesignpatterns.com/2012/05/using-newinstance-to-instantiate.html public c ...
 - 解题的小问题(C++)
			
1.判断一个数是否为整数 if(m==(int)m) 2.#include <bits/stdc++.h>using namespace std;int main(){ int n ...
 - Kubernetes 1.5.1 部署
			
> kubernetes 1.5.0 , 配置文档 # 1 初始化环境 ## 1.1 环境: | 节 点 | I P ||--------|-------------||n ...
 - hdu_5787_K-wolf Number(数位DP)
			
题目链接:hdu_5787_K-wolf Number 题意: 给你一个区间,让你找满足任意k个数位内都没有相同的数字的个数 题解: 因为k不大,就直接将当前pos的前k-1个数传进去就行了 #inc ...
 - android网络编程之HttpUrlConnection的讲解--上传大文件
			
1.服务器后台使用Servlet开发,这里不再介绍. 2.网络开发不要忘记在配置文件中添加访问网络的权限 <uses-permission android:name="android. ...
 - org.hibernate.exception.JDBCConnectionException: could not execute query
			
最近在做一个项目,测试的时候是没有问题的,但是放到服务器上以后,第二天就会出现下面的异常.重启Tomcat服务器后就正常了,但是下一天还是会出现同样的异常..... 我就查了一些资料最终把问题给解决了 ...
 - Javascript调用 ActiveXObject导出excel文档。
			
function makeDataBook(){ var xls = new ActiveXObject ("Excel.Application"); xls.visible = ...
 - htaccess  实现网址缩短
			
访问 :app.xxx.com/a 解析到:app.xxx.com/index.php/app/a <IfModule mod_rewrite.c> RewriteEngine on Re ...