2018-8-13关于SpringBoot默认生成文件的部分目录介绍和结构树

关于springboot目录介绍

├─.idea /idea的一些项目配置/
│ ├─codeStyles
│ └─libraries
├─.mvn /maven的一些配置/
│ └─wrapper
├─src
│ ├─main
│ │ ├─java
│ │ │ └─com
│ │ │ ├─example
│ │ │ │ └─demo /你的定义的包/
│ │ │ └─orochi
│ │ └─resources
│ │ ├─static /保存所有的静态资源 js,css,images;/
│ │ └─templates /保存所有的模板页面;freemarker,thymeleaf/
│ └─test /编写测试的时候的目录例如单元测试等/
│ └─java
│ └─com
│ └─example
│ └─demo
└─target /生成文件或者打包后的文件所在目录等/
├─classes
│ └─com
│ ├─example
│ │ └─demo
│ └─orochi
├─generated-sources
│ └─annotations
├─generated-test-sources
│ └─test-annotations
└─test-classes
└─com
└─example
└─demo

一般来说还有application.properties也就是springboot的应用配置文件;

默认配置文件

  1. application.properties
  2. application.yml
    这两种都是固定的全局配置文件
    主要用于修改SpringBoot自动配置的默认值
    因为YML是以数据为中心的,所以他比传统json和xml等更适合作为配置文件
    yml —> YAML
    1
    2
    server:
    port: 8080
1
2
3
<server>
<port>8080</port>
</server>

YAM的基本语法

1
2
3
server:
port: 8080
path: /hello

数组(List、Set)
用- 值表示数组中的一个元素

pets:
-cat
-dog
-pig
行内写法
pets: [cat,dog,pig]

注意yaml默认不识别tab键所以当要通过缩进的时候请乖乖的打空格

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
server:
port: 8081

person:
lastName: zhangsan
age: 18
boss: false
birth: 2017/12/12
maps: {k1: v1, k2: 12}
lists:
- lisi
- zhaoliu
dog:
name: 小狗
age: 2

1
2
3
4
5
6
7
8
9
10
11
12
package con.atguigu.springboot.bean;
@Data
public class Dog{
private String name;
private Integer age;
@Override
public String toString(){
return "Dog{" + "name'" + name + '\" +
", age=" + age +
'}';
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package com.atguigu.springboot.bean;

import java.util.Date;
import java.util.List;
import java.util.Map;
@Data
/**
* 将配置文件中配置的每一个属性的值, 映射到这个组件中
* @ConfigurationProperties 告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定;
* prefix = "person", 配置文件中哪个下面的所有属性进行——映射
* 只有这个组件是容器中的组件, 才能使用容器提供的@ConfigurationProperties功能
*
/**
@Component
@ConfigurationProperties(prefix = "person")
public class Person{
private String lastName;
private Integer age;
private Boolean boss;
private Date birth;

private Map<String,Object> maps;
private List<Object> lists;
private Dog dog;

@Override
public String toString(){
return "Person{" +
"lastName='" + lastName + '\" +
", age=" + age +
", boss=" + boss +
", birth=" + birth +
", maps=" + maps +
", lists=" + lists +
", dog=" + dog +
'}' ;
}
}

ConfigurationProperties和Value注解的区别对比

区别 @ConfigurationProperties @Value
功能 批量注入配置文件中的属性 一个个指定
松散绑定(松散语法) 支持(比方说lastname,lastName,last_name,last-name都能识别) 不支持(不能识别)
SpEL(Spring表达式) 不支持 支持
JSR303数据校验 支持 不支持
复杂类型封装 支持 不支持

@Validated /进行数据校验/
比方说
@Email /所填写数据必须是邮箱格式/

一般在某次业务逻辑中只需要获取配置文件的某一项值可以考虑使用@Value
如果我们编写了一个JavaBean来配置文件进行映射,我们就可以直接使用@ConfigurationProperties