【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后台运行的一些配置方式.在介绍后台运行配置之前, ...
随机推荐
- ios 中Category类别(扩展类)小结
类别 类别是一种为现有的类添加新方法的方式.利用Objective-C的动态运行时(runtime)分配机制,可以为现有的类添加新方法,这种为现有的类添加新方法的方式称为类别catagory,他可以为 ...
- Maven快速搭建GUI项目
一.eclipse安装好maven插件,并将maven集成到eclipse之后,用maven的archetype,搭建好一个maven-archetype-queckstart项目的骨架. 二.可执行 ...
- Hibernate框架--配置,映射,主键
SSH框架: Struts框架, 基于mvc模式的应用层框架技术! Hibernate, 基于持久层的框架(数据访问层使用)! Spring, 创建对象处理对象的依赖关系以及框架整合! Da ...
- 有关webapplicationcontext的初始化
ApplicationContext是Spring的核心,Context我们通常解释为上下文环境,我想用“容器”来表述它更容易理解一些,ApplicationContext则是“应用的容器”了:在We ...
- 五种JSP页面跳转方法详解
1. RequestDispatcher.forward() 是在服务器端起作用,当使用forward()时,Servlet engine传递HTTP请求从当前的Servlet or JSP到另外一个 ...
- /etc/fstab 文件解释
/etc/fstab 文件解释 文件fstab包含了你的电脑上的存储设备及其文件系统的信息.它是决定一个硬盘(分区)被怎样使用或者说整合到整个系统中的唯一文件. 这个文件的全路径是/etc/fstab ...
- ios中的关键词@property @synthesize
@interface Person : NSObject{ int myNumber;} @property(nonatomic) int myNumber;//这个关键字是可以带套get 与s ...
- .net文件上传,客户端用jquery file upload
<%@ WebHandler Language="C#" Class="Handler" %> using System; using System ...
- iOS 最值宏定义
NSIntegerMax.NSIntegerMin.NSUIntegerMax.MAXFLOAT
- hibernate ——联合主键
接上一篇博客:http://www.cnblogs.com/tengpan-cn/p/5551323.html 主键类不需要写任何注解,表对象类使用@IdClass注解 在表对象类前面加@IdClas ...