From bae1e0e1c9e69203fbd9d17ebc0c70ac0fad2594 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BD=97=E7=A5=A5?= <1366971433@qq.com> Date: Fri, 11 Jan 2019 17:08:05 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=20spring=20yml=20readme.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pictures/profile.png | Bin 0 -> 2852 bytes pictures/spring-boot-yml-profile.png | Bin 0 -> 17716 bytes spring-boot/spring-boot-yml-profile/README.md | 364 +++++++----------- 3 files changed, 147 insertions(+), 217 deletions(-) create mode 100644 pictures/profile.png create mode 100644 pictures/spring-boot-yml-profile.png diff --git a/pictures/profile.png b/pictures/profile.png new file mode 100644 index 0000000000000000000000000000000000000000..ac1664477f2abac982ceb641c391fa248828ba5a GIT binary patch literal 2852 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 literal 0 HcmV?d00001 diff --git a/spring-boot/spring-boot-yml-profile/README.md b/spring-boot/spring-boot-yml-profile/README.md index f7b4416..962ad41 100644 --- a/spring-boot/spring-boot-yml-profile/README.md +++ b/spring-boot/spring-boot-yml-profile/README.md @@ -1,247 +1,177 @@ -# spring-boot 基础 +# spring-boot-yml-profile -## 一、说明 +## 一、项目结构 -#### 1.1 项目结构说明 +
-1. 本项目搭建一个简单的hello spring 的 web工程,简单说明spring-boot 的开箱即用的特性; -2. 模板引擎采用freemaker 和 thymeleaf 作为示例,分别对应模板文件makershow.ftl 和 leafShow.html; -3. spring boot 2.x 默认是不支持jsp的,需要额外的配置,关于使用jsp的整合可以参考spring-boot-jsp项目。 +## 二、常用 yaml 语法讲解 -
- -#### 1.2 项目依赖 - -导入相关的starter(启动器) - -```xml - - - 4.0.0 - - org.springframework.boot - spring-boot-starter-parent - 2.1.1.RELEASE - - - com.heibaiying - spring-boot-base - 0.0.1-SNAPSHOT - spring-boot-base - Demo project for Spring Boot - - - 1.8 - - - - - - org.springframework.boot - spring-boot-starter-freemarker - - - org.springframework.boot - spring-boot-starter-thymeleaf - - - - org.springframework.boot - spring-boot-starter-web - - - - org.projectlombok - lombok - true - - - - org.springframework.boot - spring-boot-starter-test - test - - - - - - - - org.springframework.boot - spring-boot-maven-plugin - - - - - +项目中的yml配置文件如下: +```yaml +programmer: + name: xiaoming-DEV + married: false + hireDate: 2018/12/23 + salary: 66666.88 + random: ${random.int[1024,65536]} + skill: {java: master, jquery: proficiency} + company: [baidu,tengxun,alibaba] + school: + name: unviersity + location: shanghai ``` -1. spring boot 项目默认继承自spring-boot-starter-parent,而spring-boot-starter-parent继承自spring-boot-dependencies, spring-boot-dependencies中定义了关于spring boot 依赖的各种jar包的版本,是spring boot 的版本管理中心。 +#### 2.1 基本规则 -
+1. 大小写敏感 +2. 使用缩进表示层级关系 +3. 缩进长度没有限制,只要元素对齐就表示这些元素属于一个层级。 +4. 使用#表示注释 +5. 字符串默认不用加单双引号,但单引号和双引号都可以使用,双引号不会对特殊字符转义。 +6. YAML中提供了多种常量结构,包括:整数,浮点数,字符串,NULL,日期,布尔,时间。 -2. 关于spring boot 2.x官方支持的所有starter 可以参见官方文档 [Table 13.1. Spring Boot application starters](https://docs.spring.io/spring-boot/docs/2.1.1.RELEASE/reference/htmlsingle/#using-boot-starter) +#### 2.2 对象的写法 + +```yaml +key: value +``` + +#### 2.3 map的写法 + +```yaml +# 写法一 同一缩进的所有键值对属于一个map +key: + key1: value1 + key2: value2 + +# 写法二 +{key1: value1, key2: value2} +``` + +#### 2.3 数组的写法 + +```yaml +# 写法一 使用一个短横线加一个空格代表一个数组项 +- a +- b +- c + +# 写法二 +[a,b,c] +``` + +#### 2.5 单双引号 + +单引号和双引号都可以使用,双引号不会对特殊字符转义。 + +```yaml +s1: '内容\n字符串' +s2: "内容\n字符串" + +转换后: +{ s1: '内容\\n字符串', s2: '内容\n字符串' } +``` + +#### 2.6 特殊符号 + +--- YAML可以在同一个文件中,使用---表示一个文档的开始。 -## 二、spring boot 主启动类 +## 三、spring boot 与 yaml - 如果采用IDEA 或者 Spring Tool Suite (STS) 等开发工具创建的spring boot 工程,会默认创建启动类,如果没有创建,需要手动创建启动类 +#### 3.1 spring boot 支持使用 ${app.name} 引用预先定义的值 + +```properties +appName: MyApp +appDescription: ${app.name} is a Spring Boot application +``` + +#### 3.2 spring boot 支持使用 ${random.xxx} 配置随机值 + +```properties +my.secret: ${random.value} +my.number: ${random.int} +my.bignumber: ${random.long} +my.number.less.than.ten: ${random.int(10)} +my.number.in.range: ${random.int[1024,65536]} +``` + + + +## 四、@ConfigurationProperties实现属性绑定 ```java -package com.heibaiying.springbootbase; +@Component +@ConfigurationProperties(prefix = "programmer") +@Data +@ToString +public class Programmer { -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; - -@SpringBootApplication -public class SpringBootBaseApplication { - - // 启动类默认开启包扫描,扫描与主程序所在包及其子包,对于本工程而言 默认扫描 com.heibaiying.springbootbase - public static void main(String[] args) { - SpringApplication.run(SpringBootBaseApplication.class, args); - } + private String name; + private int age; + private boolean married; + private Date hireDate; + private float salary; + private int random; + private Map skill; + private List company; + private School school; } ``` -@SpringBootApplication 注解是一个复合注解,里面包含了@ComponentScan注解,默认开启包扫描,扫描与主程序所在包及其子包,对于本工程而言 默认扫描 com.heibaiying.springbootbase +Spring Boot将环境属性绑定到@ConfigurationProperties beans时会使用一些宽松的规则,称之为松散绑定。所以Environment属性名和bean属性名不需要精确匹配。常见的示例中有用的包括虚线分割(比如,context-path绑定到contextPath),将环境属性转为大写字母(比如,PORT绑定port)。 -```java -@Target(ElementType.TYPE) -@Retention(RetentionPolicy.RUNTIME) -@Documented -@Inherited -@SpringBootConfiguration -@EnableAutoConfiguration -@ComponentScan(excludeFilters = { - @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class), - @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) }) -public @interface SpringBootApplication { - ... -} +需要注意的是`@Value`是不支持松散绑定的,所以建议除非有特殊的需求,否则在`ConfigurationProperties`和`value` 配置属性的时候最好都保持属性和变量的一致,以免造成不必要的勿扰。 + + + +## 五、多配置文件 + +多配置文件可以在同一个yml中使用 --- 分割为多个配置,或者遵循application-xxx.yml 的方式命名拆分为多个文件,并在主配置文件application.yml 中确定激活哪个配置文件,当然也可在命令行中确定,命令行的优先级大于配置文件。 + +
+ +```yaml +# 配置文件中激活配置 +spring: + profiles: + active: dev +``` + +```shell +# 命令行参数激活配置 +--spring.profiles.active=dev ``` -## 三、开箱即用的web工程 +## 六、优先级的说明 -在springbootBaseApplication.java 的同级目录创建controller文件夹,并在其中创建RestfulController.java,启动项目访问localhost:8080/restful/programmers 即可看到项目搭建成功。 +Spring Boot设计了一个非常特别的PropertySource顺序,以允许对属性值进行合理的覆盖,属性会以如下的顺序进行设值: -```java -/** - * @author : heibaiying - * @description : restful 控制器 - */ -@RestController -@RequestMapping("restful") -public class RestfulController { +1. home目录下的devtools全局设置属性(~/.spring-boot-devtools.properties,如果devtools激活)。 +2. 测试用例上的@TestPropertySource注解。 +3. 测试用例上的@SpringBootTest#properties注解。 +4. 命令行参数 +5. 来自SPRING_APPLICATION_JSON的属性(环境变量或系统属性中内嵌的内联JSON)。 +6. ServletConfig初始化参数。 +7. ServletContext初始化参数。 +8. 来自于java:comp/env的JNDI属性。 +9. Java系统属性(System.getProperties())。 +10. 操作系统环境变量。 +11. RandomValuePropertySource,只包含random.*中的属性。 +12. 没有打进jar包的Profile-specific应用属性(application-{profile}.properties和YAML变量) +13. 打进jar包中的Profile-specific应用属性(application-{profile}.properties和YAML变量)。 +14. 没有打进jar包的应用配置(application.properties和YAML变量)。 +15. 打进jar包中的应用配置(application.properties和YAML变量)。 +16. @Configuration类上的@PropertySource注解。 +17. 默认属性(使用SpringApplication.setDefaultProperties指定)。 - @GetMapping("programmers") - private List getProgrammers() { - List programmers = new ArrayList<>(); - programmers.add(new Programmer("xiaoming", 12, 100000.00f, LocalDate.of(2019, Month.AUGUST, 2))); - programmers.add(new Programmer("xiaohong", 23, 900000.00f, LocalDate.of(2013, Month.FEBRUARY, 2))); - return programmers; - } -} -``` +这里做一下说明,上文第12,14 点没有打进jar包的文件指的是在启动时候通过`spring.config.location`参数指定的外部配置文件,外部配置文件的优先级应该是大于jar中的配置文件。 -这里之所以能够开箱即用,是因为我们在项目中导入spring-boot-starter-web启动器,而@SpringBootApplication 复合注解中默认开启了@EnableAutoConfiguration注解允许开启自动化配置,spring在检查导入starter-web的依赖后就会开启web的自动化配置。 +对上面的配置中常用的规则可以精简如下: - - -## 四、模板引擎 - -这里我们在一个项目中同时导入了freemaker 和 thymeleaf的starter(虽然并不推荐,但是在同一个项目中是可以混用这两种模板引擎的)。 - -#### 4.1 freemarker - -```java -/** - * @author : heibaiying - * @description : 跳转渲染模板引擎 默认模板的存放位置为classpath:templates - */ -@Controller -@RequestMapping("freemarker") -public class FreeMarkerController { - - @RequestMapping("show") - private String programmerShow(ModelMap modelMap){ - List programmerList=new ArrayList<>(); - programmerList.add(new Programmer("xiaoming",12,100000.00f,LocalDate.of(2019,Month.AUGUST,2))); - programmerList.add(new Programmer("xiaohong",23,900000.00f,LocalDate.of(2013,Month.FEBRUARY,2))); - modelMap.addAttribute("programmers",programmerList); - return "markerShow"; - } -} - -``` - -```html - - - - - freemarker模板引擎 - - -
    - <#list programmers as programmer> -
  • 姓名: ${programmer.name} 年龄: ${programmer.age}
  • - -
- - -``` - -#### 4.2 thymeleaf - -```java -/** - * @author : heibaiying - * @description : 跳转渲染模板引擎 默认模板的存放位置为classpath:templates - */ -@Controller -@RequestMapping("thymeleaf") -public class ThymeleafController { - - @RequestMapping("show") - private String programmerShow(ModelMap modelMap) { - List programmerList = new ArrayList<>(); - programmerList.add(new Programmer("xiaoming", 12, 100000.00f, LocalDate.of(2019, Month.AUGUST, 2))); - programmerList.add(new Programmer("xiaohong", 23, 900000.00f, LocalDate.of(2013, Month.FEBRUARY, 2))); - modelMap.addAttribute("programmers", programmerList); - return "leafShow"; - } -} - -``` - -```html - - - - - thymeleaf模板引擎 - - -
    -
  • - 姓名: - 薪水: -
  • -
- - -``` - -#### 4.3 文档说明 - -freemarker:提供了完善的中文文档,地址 http://freemarker.foofun.cn/ - -thymeleaf:官方英文文档地址:[thymeleaf 3.0.11RELEASE](https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.pdf) - -注:我在本仓库中也上传了一份[thymeleaf中文文档(gangzi828(刘明刚 译))](https://github.com/heibaiying/spring-samples-for-all/tree/master/referenced%20documents),翻译的版本为3.0.5RELEASE +**命令行 > application-{profile}.yml > application.yml > 默认属性** \ No newline at end of file