1. yml 基本语法
SpringBoot使用一个全局的配置文件,配置文件名是固定的。可以是application.properties 或者application.yml
通常我们使用yml 来作配置文件
- 配置端口 与修改对象的默认值
application.yml配置如下
employee:
age: 18
name: 张三
spring:
profiles:
active: dev
---------------------
/*
1. 通过@Value("${employee.name}") 来获取配置文件给的默认值
2. 通过@ConfigurationProperties(prefix = "employee") 自动匹配字段默认值
*/
Component
@ConfigurationProperties(prefix = "employee")
public class Employee {
//@Value("${employee.name}")
private String name="离歌";
//@Value("${employee.age}")
private Integer age=15;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "Employee{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
2. Profile多环境支持
2. 为什么需要配置多环境
一套代码要在多种环境运行(开发,测试,上线),所以我们的配置文件要支持多种环境
Application.yml
server:
port: 8081
spring:
profiles:
active: prod #表示指定生产环境
---
server:
port: 8083
spring:
profiles: dev
---
server:
port: 8084
spring:
profiles: prod #指定属于哪个环境
通常将不同环境分别配置到不同的文件,在主配置文件中指定环境
3. SpringBoot 自动配置的原理
- @EnableAutoConfiguration开启自动配置
- AutoConfigurationImportSelector 配置导入选择器
- spring-boot-autoconfigure-2.0.5.RELEASE.jar 选择器找到自动配置的jar包
- 找到spring.factories 文件中的 EnableAutoConfiguration 节点
- 加载 EnableAutoConfiguration下自动配置的类,完成自动配置
4. SpringBootTest的配置和使用
- 引入依赖的jar包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
- 创建Springboot的测试类
@RunWith(SpringRunner.class) //这里与Springtest不同
@SpringBootTest(classes = ApplicationConfig.class) //这里找到配置类
public class MySpringBootTest {
@Autowired
private Employee employee;
@Test
public void testSpringTest(){
System.out.println(employee);
}
5. Spring boot日志支持
- 简单使用日志
@RunWith(SpringRunner.class)
@SpringBootTest(classes = ApplicationConfig.class)
public class MySpringBootTest {
@Autowired
private Employee employee;
private Logger logger = LoggerFactory.getLogger(MySpringBootTest.class);
@Test
public void testSpringTest(){
//日志显示的等级 trace >debug > info> warn >error
logger.trace("这是一个trace日志");
logger.info("这是一个info日志");
logger.warn("这是一个warn日志");
logger.error("这是一个error日志");
logger.debug("这是一个debug日志");
};
}
- 在application.properties中配置 日志
#logging.level.cn.itsource=error //error 日志的显示等级
#logging.file=my.txt //生成的文件名,以项目路径作为根路径
#logging.file.max-size=1KB //文件的最大装载
//打印格式
#logging.pattern.console="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n"
- 指定配置文件配置logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 定义常量 : 日志格式 -->
<property name="CONSOLE_LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} ----> [%thread] ---> %-5level %logger{50} - %msg%n"/>
<!--ConsoleAppender 用于在屏幕上输出日志-->
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
<!--定义控制台输出格式-->
<encoder>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<!-- 设置字符集 -->
<charset>UTF-8</charset>
</encoder>
</appender>
<!--打印到文件-->
<appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logs/springboot.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>logs/springboot-%d{yyyyMMdd}-%i.log.gz</fileNamePattern>
<maxFileSize>1KB</maxFileSize>
<maxHistory>10</maxHistory>
<!--总上限大小-->
<totalSizeCap>1GB</totalSizeCap>
</rollingPolicy>
<!--定义控制台输出格式-->
<encoder>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<!-- 设置字符集 -->
<charset>UTF-8</charset>
</encoder>
</appender>
<!--root是默认的logger 这里设定输出级别是debug-->
<root level="info">
<!--定义了两个appender,日志会通过往这两个appender里面写-->
<appender-ref ref="stdout"/>
<appender-ref ref="file"/>
</root>
<!--如果没有设置 additivity="false" ,就会导致一条日志在控制台输出两次的情况-->
<!--additivity表示要不要使用rootLogger配置的appender进行输出-->
<logger name="cn.itsource" level="error" additivity="false">
<appender-ref ref="stdout"/>
<appender-ref ref="file"/>
</logger>
</configuration>
6. Spring boot集成 Thymeleaf模板引擎
- 导入依赖的jar包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
- 在resources/templates下面创建模板文件 hello.html
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>ces</title>
</head>
<body>
<h1>成功!</h1>
<!--使用语法th:text 将div里面的文本内容设置为 -->
<div th:text="${msg}">这是显示欢迎信息</div>
</body>
</html>
- 编写controller
@Controller
public class HelloController {
@RequestMapping("/index")
public String hello(Model model){
model.addAttribute("msg", "你的名字");
return "hello";
}
}
- 访问效果
- Thymeleaf 的自动配置原理
- @EnableAutoConfiguration开启自动配置
- AutoConfigurationImportSelector 配置导入选择器
- spring-boot-autoconfigure-2.0.5.RELEASE.jar 选择器找到自动配置的jar包
- 找到spring.factories 文件中的 EnableAutoConfiguration 节点
- 加载 EnableAutoConfiguration下自动配置的类,完成自动配置
- Thymeleaf 默认配置了视图解析器,如果你没有手动配置,就是用默认的
7.静态资源
- 静态资源目录
resource/static
- webjars
导入jquery依赖 ( http://www.webjars.org/)
<dependency>
<groupId>org.webjars</groupId>
<artifactId>jquery</artifactId>
<version>3.4.1</version>
</dependency>
- 导入jquery的js
<script src="/webjars/jquery/3.4.1/jquery.js"></script>
- 设置访问的主页
resources/static/index.html
- 页头的图标
resources/static/favicon.ico 随便找一张图片重命名为favicon.ico
- 修改banner
在resources/templates/banner.txt 文件 网上可以找到banner自动生成工具