前言

只是简单的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表达式

有待了解,现在还不清楚具体是什么、如何使用、什么时候用。

参考:

thymeleaf 基本语法

5分钟了解Thymeleaf的标准方言(Standard dialects)

附录

玩转spring boot——properties配置

【spring boot】SpringBoot初学(2) - properties配置和读取的更多相关文章

  1. Spring Boot项目简单上手+swagger配置+项目发布(可能是史上最详细的)

    Spring Boot项目简单上手+swagger配置 1.项目实践 项目结构图 项目整体分为四部分:1.source code 2.sql-mapper 3.application.properti ...

  2. Spring Boot 的配置文件application.properties

    Spring Boot 中的application.properties 是一个全局的配置文件,放在src/main/resources 目录下或者类路径的/config下. 作为全局配置文件的app ...

  3. Spring boot运行原理-自定义自动配置类

    在前面SpringBoot的文章中介绍了SpringBoot的基本配置,今天我们将给大家讲一讲SpringBoot的运行原理,然后根据原理我们自定义一个starter pom. 本章对于后续继续学习S ...

  4. Spring Boot加载application.properties配置文件顺序规则

    SpringApplication会从以下路径加载所有的application.properties文件: 1.file:./config/(当前目录下的config文件夹) 2.file:./(当前 ...

  5. Spring Boot应用的后台运行配置

    酱油一篇,整理一下关于Spring Boot后台运行的一些配置方式.在介绍后台运行配置之前,我们先回顾一下Spring Boot应用的几种运行方式: 运行Spring Boot的应用主类 使用Mave ...

  6. Spring Boot 启动(二) 配置详解

    Spring Boot 启动(二) 配置详解 Spring 系列目录(https://www.cnblogs.com/binarylei/p/10198698.html) Spring Boot 配置 ...

  7. spring boot中的约定优于配置

    Spring Boot并不是一个全新的框架,而是将已有的Spring组件整合起来. Spring Boot可以说是遵循约定优于配置这个理念产生的.它的特点是简单.快速和便捷. 既然遵循约定优于配置,则 ...

  8. JAR(Spring Boot)应用的后台运行配置

    酱油一篇,整理一下关于Spring Boot后台运行的一些配置方式.在介绍后台运行配置之前,我们先回顾一下Spring Boot应用的几种运行方式: 运行Spring Boot的应用主类 使用Mave ...

  9. Spring Boot应用的后台运行配置(转载)

    作者:程序猿DD 酱油一篇,整理一下关于Spring Boot后台运行的一些配置方式.在介绍后台运行配置之前,我们先回顾一下Spring Boot应用的几种运行方式: 运行Spring Boot的应用 ...

  10. [转]Spring Boot应用的后台运行配置

    转自:http://blog.didispace.com/spring-boot-run-backend/ 酱油一篇,整理一下关于Spring Boot后台运行的一些配置方式.在介绍后台运行配置之前, ...

随机推荐

  1. 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 ...

  2. iOS image caching. Libraries benchmark (SDWebImage vs FastImageCache)

    http://www.cocoachina.com/ios/20150128/11053.html 1.引言 过去的几年里,iOS应用在视觉方面越来越吸引人.图像展示是其中很关键的部分,因为大部分图像 ...

  3. 设计模式--静态工厂设计模式在android中的使用

    今天看到这篇文章:http://www.androiddesignpatterns.com/2012/05/using-newinstance-to-instantiate.html public c ...

  4. 解题的小问题(C++)

    1.判断一个数是否为整数  if(m==(int)m) 2.#include <bits/stdc++.h>using namespace std;int main(){    int n ...

  5. Kubernetes 1.5.1 部署

    > kubernetes 1.5.0 , 配置文档 # 1 初始化环境 ## 1.1 环境: | 节 点  |      I P      ||--------|-------------||n ...

  6. hdu_5787_K-wolf Number(数位DP)

    题目链接:hdu_5787_K-wolf Number 题意: 给你一个区间,让你找满足任意k个数位内都没有相同的数字的个数 题解: 因为k不大,就直接将当前pos的前k-1个数传进去就行了 #inc ...

  7. android网络编程之HttpUrlConnection的讲解--上传大文件

    1.服务器后台使用Servlet开发,这里不再介绍. 2.网络开发不要忘记在配置文件中添加访问网络的权限 <uses-permission android:name="android. ...

  8. org.hibernate.exception.JDBCConnectionException: could not execute query

    最近在做一个项目,测试的时候是没有问题的,但是放到服务器上以后,第二天就会出现下面的异常.重启Tomcat服务器后就正常了,但是下一天还是会出现同样的异常..... 我就查了一些资料最终把问题给解决了 ...

  9. Javascript调用 ActiveXObject导出excel文档。

    function makeDataBook(){ var xls = new ActiveXObject ("Excel.Application"); xls.visible = ...

  10. htaccess 实现网址缩短

    访问 :app.xxx.com/a 解析到:app.xxx.com/index.php/app/a <IfModule mod_rewrite.c> RewriteEngine on Re ...