Spring Boot 入门、配置、日志

Spring Boot 优点

  • 快速创建独立运行的 Spring 项目以及与主流框架集成
  • 使用嵌入式的 Servlet 容器,应用无需打成 WAR 包
  • starters 自动依赖与版本控制
  • 大量的自动配置,简化开发,也可以修改默认值
  • 无需配置 XML,无代码生成,开箱即用
  • 准生产环境的运行时应用监控
  • 与云计算的天然集成

YAML 文件

  • 字符串默认不用加上单引号或者双引号
  • 字符串加双引号:不会转义字符串里面的特殊字符
  • 字符串加单引号:会转义字符串里面的特殊字符
  • 对象表示:
friend:
	lastName: zhanghui
	age: 18

friend: {lastName: zhanghui, age: 18}
  • 数组表示:
pet:
	- cat
	- dog
	- pig

pet: [cat,dog,pig]

注解

// 全局配置文件
@ConfigurationProperties(prefix="haha")

// 指定路径配置文件
@PropertySource(value={"classpath:haha.properties"})

// 导入 Spring 的配置文件
@ImportResource(locations={"classpath:haha.xml"})

配置类

@Configuration
public class MyAppConfig{
	// 将方法的返回值添加到容器中,方法名为 id
	@Bean
	public Person person() {
		return new Person();
	}
}

配置文件占位符

  • 随机数
${random.value}
${random.int}
${random.long}
${random.int(10)}
${random.int[1,10]}
  • 占位符获取之前配置的值,如果没有可以使用:指定默认值
person.dog.name=${person.name:zhanghui}_dog

Profile

  • 多 Profile 文件
    主配置文件可以命名为:application-{profile}.properties/yml
    默认使用 application.properties 的配置
  • 激活指定的 Profile 文件
spring.profiles.active=dev
  • YML 文件支持多 文档块
server:
	port: 8081
spring:
	profiles:
		active: prod
		
---
server:
	port: 8082
spring:
	profiles: prod
	
  • 激活方式:
// 命令行
--spring.profiles.active=dev

// 配置文件
spring.profiles.active=dev

// jvm 参数
-Dspring.profiles.active=dev

配置文件加载(优先级由高到低):

SpringBoot 会从这四个位置全部加载主配置文件;互补配置
命令行 --spring.config.location 改变默认配置

  • file:./config/
  • file:./
  • classpath:/config/
  • classpath:/

外部配置加载顺序(优先级由高到低)

  • 命令行参数
  • jar 包外部的 application-{profile}.properties 或 application.yml
  • jar 包内部的 application-{profile}.properties 或 application.yml
  • jar 包外部的 application.properties 或 application.yml
  • jar 包内部的 application.properties 或 application.yml

自动配置原理

  1. Spring Boot 启动的时候加载主配置类,开启了自动配置功能 @EnableAutoConfiguration
  2. @EnableAutoConfiguration 利用 AutoConfigurationImportSelector 的 selectImports() ,将类路径下 META-INF/spring.factories 里面配置的所有 EnableAutoConfiguration 的值加入到容器中
  3. 每一个 xxAutoConfiguration 类都是容器中的一个组件,每一个自动配置类完成一种自动配置功能
  4. 分析 HttpEncodingAutoConfiguration 类:
@Configuration(proxyBeanMethods = false)
// 启动指定类的 ConfigurationProperties 功能,将配置文件中对应的值和 HttpEncodingProperties 绑定起来
@EnableConfigurationProperties({HttpProperties.class})
// 判断当前应用是否是web应用,如果是,配置类生效
@ConditionalOnWebApplication(type = Type.SERVLET)
// 判断当前项目有没有这个类
// springmvc 中解决乱码的过滤器
@ConditionalOnClass({CharacterEncodingFilter.class})
// 判断配置文件中是否存在配置:spring.http.encoding.enabled
// 如果不存在,值默认为 true
@ConditionalOnProperty(
    prefix = "spring.http.encoding",
    value = {"enabled"},
    matchIfMissing = true
)
public class HttpEncodingAutoConfiguration {

// 从配置文件中获取指定的值和 bean 的属性进行绑定
@ConfigurationProperties(prefix = "spring.http")
public class HttpProperties {

日志

  • Spring 框架默认使用 JCL(Jakarta Commons Logging)
  • SpringBoot 框架默认使用 SLF4j 和 logback
  • 日志级别(由低到高):
    1、trace
    2、debug
    3、info
    4、warn
    5、error
# 设置日志级别
logging.level.com.zh=trace

# 不指定路径在当前项目下生成 springboot.log 日志
# 在当前磁盘的根路径下创建,使用 spring.log 作为默认文件
logging.path=/springboot/log

# 指定文件
logging.file=G:/springboot.log
  • logback.xml 和 logback.spring.xml
    logback.xml :直接被日志框架识别
    logback.spring.xml :由 SpringBoot 解析日志配置,而不是被直接加载到日志配置项,支持一些高级功能
<springProfile name="staging">
	指定某段配置只在某个环境下生效
</springProfile>
发布了42 篇原创文章 · 获赞 2 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/sanmao123456_/article/details/104233718