1 入门
1.1 简介
简化Spring应用开发,整合Spring技术栈,JavaEE一站式解决方案。(用keras和TensorFlow的关系去理解Spring Boot和Spring)。
1.2 微服务
每一个功能元素放到独立可替换升级的服务中(传统的服务拆分成多个)。
1.3 依赖
Spring boot将所有场景功能都抽取出来,做成一个个的starters(启动器),只需要在项目里面引入场景就行,依赖是自动导入的。
1.4 文件目录
main/
├── java:自己写的java业务逻辑
│ └── xyz
│ └── cqulwj
│ ├── controller
│ │ └── HomeController.java
│ └── Main.java
└── resources:资源
├── application.properties:Spring Boot 应用的配置文件
├── static:所有的静态资源;js css images等;
└── templates:保存所有的模板页面;(使用嵌入式tomcat,默认不支持JSP页面)
2 配置文件
2.1 配置文件
Spring Boot 使用一个全局的配置文件,文件名固定:
- application.properties
- application.yml
yml是一种文本标记语言,以数据为中心(建议使用)
2.2 YAML语法
K:V 标识一对键值对
以空格缩进来标识层级关系
server:
port: 8080
address: 0.0.0.0
对象、Map写法
student:{
no:001,name:Jack}
数组的两种写法
pets:
- cat
- dog
- pig
或
pets:[cat,dog,pig]
2.3 yml配置文件值注入
2.3.1 首先申明要注入的类
@Component
@ConfigurationProperties(prefix = "student")
public class Student {
private Integer num;
……;
}
注意要有setter方法。
2.3.2 在yml中配置类的值
student:
num: 18
……
2.3.3 配置pom文件依赖
<!--yml依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
2.3.4 使用
@Autowired
Student student;
2.4 配置文件占位符号
随机数:${random.int}、${random.value}、${random.long}
默认值:${num:10}(冒号后面是默认值)
2.5 profile
2.5.1 多profile文件
配置文件可以是:Application-{profile}.yml/properties
激活:spring.profiles.active=devjijiji
2.5.2 yml支持多文档块方式
server:
port: 8081
address: 0.0.0.0
spring:
profiles:
active: dev
---
spring:
profiles: dev
server:
port: 8082
默认8081,激活dev则开启8082端口
2.6 配置文件的加载位置
- file: ./config/ 即:项目根目录下的/config,和pom.xml一级
- file: ./ 即:项目根目录,和pom.xml一级
- classpath:/config/ 即:main/resources/config/application.properties
- classpath:/ 即:main/resources/application.properties
知识点:按照优先级由高到低加载,高覆盖低的配置;配置文件可以另外指定位置,在命令行启动的时候添加参数–spring.config.location即可(方便部署后再配置);也可以在打包后的jar包同目录下放置配置文件。
2.7 自动配置原理
待深挖……
3 日志
3.1 日志框架选择
日志门面:SLF4J
日志实现:Logback
Spring框架默认使用JCL;
Spring Boot选用SLF4J和logback。
3.2 日志框架使用
3.2.1 使用SLF4j
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Controller
public class HomeController {
@ResponseBody
@RequestMapping("/home")
public String home(){
Logger logger= LoggerFactory.getLogger(HomeController.class);
logger.info("进入访问");
return "This is my home!!!";
}
}
3.2.2 各包日志框架混用问题
可以使用slf4j的对应中间包替换原有日志框架,再使用slf4j其他的实现。
3.3 Spring Boot日志关系
3.3.1 底层也是slf4j+logback的方式;
3.3.2 Springboot同时也把其他包也替换成slf4j;
3.3.3 引入新的框架时,要移除其日志框架,springboot自动会添加slf4j;
3.4 Spring Boot日志使用
Logger logger= LoggerFactory.getLogger(HomeController.class)
日志方法,级别由低到高:
trace()<debug()<info()<warn()<error()
3.4.1 可以在配置文件中设置输出日志的级别。
logging.level.xyz.cqulwj=trace
3.4.2 设置日志文件位置
logging.file=path/my.log
3.4.3 指定日志文件目录
logging.path=path
3.4.4 可以设置自己的日志配置文件
会覆盖默认的spring配置
建议命名为:logback-spring.xml
4 Spring Boot与Web开发
使用流程:选择应用->自动配置->编写业务逻辑。
4.1 静态资源
4.1.1 访问webjars下面的资源,直接给包的目录/webjars/**路径。
4.1.2 自己业务逻辑的资源寻找路径即"/–"(静态资源文件夹):
- “classpath:/META_INF/resources”
- “classpath:/resources/”
- “classpath:/static/”
- “classpath:/public/”
- "/"当前项目的根路径
4.1.3 欢迎页的映射
所有静态资源文件夹+index.html
4.1.4 图标
所有的 **/favicon.ico 也在静态资源下面找
4.2 模板引擎
JSP、Velocity、Freemarker、Thymeleaf
4.2.1 引入thymeleaf
知识点
1 Spring boot只找SpringBootApplication注解主类同级和下一级的组件扫描,不会找其上一级的;
2 @ImportResource(locations={“classpath:—.xml”}):导入Spring的配置文件,让配置文件生效;
3 @PropertySource 加载指定配置文件;
4 @Configuration 配置类 -> @Bean将方法返回值添加到容器中