springboot模板:
在学习第二小节前,为了方便日后使用springboot 咱们去除多余文件做成模板,以后springboot项目直接复制即可
1:在工作空间中复制对应工程,并修改工程名称
2.:删除与Idea相关配置文件,仅保留src目录与pom.xml文件
3. 修改pom.xml文件中的artifactId与新工程/模块名相同
4. 删除name标签(可选) 5. 保留备份工程供后期使用
springboot模板(点击名称下载)
一:基础配置
1.1:属性配置
1.1.1:SpringBoot默认配置文件application.properties
#修改服务器配置
server.port=80
#关闭运行日志图标(banner)
spring.main.banner-mode=off
#设置日志相关
logging.level.root=debug
常见应用程序属性 (spring.io)
1.2:配置文件分类
SpringBoot提供了3种配置文件的格式
1: properties(传统格式/默认格式)
2: yml(主流格式)
3:yaml
# yaml ,yml 格式:
server:
port: 81
如果有多个配置文件他们不同属性配置是共存的,加载顺序:
application.properties > application.yml > application.yaml
我们一般写配置文件不需要记住,直接输入关键字用IDEA的提示即可,有时我们的提示不生效,是因为这个配置文件没有被IDEA 识别到,这个时候我们 Setting → Project Structure → Facets 选中对应项目/工程 → Customize Spring Boot → 选择配置文件 就解决了
1.3:yaml文件
1.3.1:啥是yaml文件
yaml(YAML Ain't Markup Language),一种数据序列化格式
优点:
容易阅读
容易与脚本语言交互
以数据为核心,重数据轻格式
YAML文件扩展名
.yml(主流)
.yaml
1.3.2:yaml语法规则
大小写敏感
属性层级关系使用多行描述,每行结尾使用冒号结束
使用缩进表示层级关系,同层级左侧对齐,只允许使用空格(不允许使用Tab键)
属性值前面添加空格(属性名与属性值之间使用冒号+空格作为分隔)
# 表示注释
核心规则:数据前面要加空格与冒号隔开,如下:
boolean: TRUE #TRUE,true,True,FALSE,false,False均可
float: 3.14 #6.8523015e+5 #支持科学计数法
int: 123 #0b1010_0111_0100_1010_1110 #支持二进制、八进制、十六进制
null: ~ #使用~表示null
string: HelloWorld #字符串可以直接书写
string2: "Hello World" #可以使用双引号包裹特殊字符
date: 2018-02-17 #日期必须使用yyyy-MM-dd格式
datetime: 2018-02-17T15:02:31+08:00 #时间和日期之间使用T连接,最后使用+代表时区
数组表示方式:在属性名书写位置的下方使用减号作为数据开始符号,每行书写一个数据,减号与数据间空格分隔
subject:
- Java
- 前端
- 大数据
enterprise:
name: itcast
age: 16
subject:
- Java
- 前端
- 大数据
likes: [王者荣耀,刺激战场] #数组书写缩略格式
users: #对象数组格式
- name: Tom
age: 4
- name: Jerry
age: 5
users: #对象数组格式二
-
name: Tom
age: 4
-
name: Jerry
age: 5
users2: [ { name:Tom , age:4 } , { name:Jerry , age:5 } ] #对象数组缩略格式
1.4:yaml数据读取
1.4.1:使用@Value读取单个数据,属性名引用方式:${一级属性名.二级属性名……}
@RestController
@RequestMapping("/books")
public class BookController {
@Value("${lesson}")
private String lessonName;
@Value("${server.port}")
private int port;
@Value("${enterprise.subject[1]}")
private String[] subject_01;
}
1. 在配置文件中可以使用${属性名}方式引用属性值
baseDir: /usr/local/fire
center:
dataDir: ${baseDir}/data
tmpDir: ${baseDir}/tmp
logDir: ${baseDir}/log
msgDir: ${baseDir}/msgDir
2. 如果属性中出现特殊字符,可以使用双引号包裹起来作为字符解析
lesson: "Spring\tboot\nlesson"
1.4.2:封装全部数据到Environment对象
@RestController
@RequestMapping("/books")
public class BookController {
@Autowired
private Environment env;
@GetMapping("/{id}")
public String getById(@PathVariable Integer id){
System.out.println(env.getProperty("lesson"));
System.out.println(env.getProperty("enterprise.name"));
System.out.println(env.getProperty("enterprise.subject[0]"));
return "hello , spring boot!";
}
}
1. 使用Environment对象封装全部配置信息
2. 使用@Autowired自动装配数据到Environment对象中
1.4.3:封装使用
另外自定义对象 enterprise 使用起来比较麻烦我们可以封装使用:
@Component
@ConfigurationProperties(prefix = "enterprise")
public class Enterprise {
private String name;
private Integer age;
private String[] subject;
}
@RestController
@RequestMapping("/books")
public class BookController {
@Autowired
private Enterprise enterprise;
}
比如我们封装数据源信息:
1. 使用@ConfigurationProperties注解绑定配置信息到封装类中
2. 封装类需要定义为Spring管理的bean,否则无法进行属性注入