Springboot使用复盘
1、约定优于配置
遵循一种约定。一种大众化的合理的默认值。
偏离约定:需要手动配置对约定进行配置替换。对应的映射关系不需要手动配置。默认约定大大减少手动配置。
2、SpringBoot概念
2.1、什么是SpringBoot
全新开源的轻量级框架,基于Spring4.0设计,不仅继承了Spring框架原有的优秀特性,而且简化了整个搭建和开发过程,集成大量的框架解决了依赖包的版本冲突和不稳定性等问题。
2.2、SpringBoot的主要特性
1、SpringBoot Starter:起步依赖,将常用的依赖分组进行了整合,将其合并到了一个依赖中,这样就可以一次性添加到项目的Maven中或Gradle构建中。
2、使编码变得简单,SpringBoot采用JavaConfig的方式对Spring进行配置,并且提供了大量的注解。
3、自动配置:springboot在启动的过程中,会自动的将一些配置类的bean进行创建,并且添加到IOC容器中。
4、使部署变得简单。内置了三种Servlet容器:Tomcat,Jetty,undertow,并且项目可以打成一个jar包。
3、案例实现
3.1案例实现
4、热部署
插件:spring-boot-devtools
没啥用,项目较大时不太实用,直接ctrl+F9去build项目就好。
5、全局配置文件
5.1全局配置文件概述及其优先级
能够对一些默认的配置值进行修改及自定义配置,例如端口号。
两种及优先级:
2.4.0之前:application.properties>application.yml
2.4.0之后:application.properties<application.yml
路径及优先级:
1-file:./config/
2-file:./
3-classpath:/config
4-classpath:/
5.2properties配置文件
@ConfigurationProperties(prefix = "person")
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency>
list和arry写法相同
map和类写法相同
5.3yml配置文件
树状格式,冒号后面加空格,
6、属性注入
使用全局配置文件设置属性
6.1属性注入常用注解
@Configuration声明一个类作为配置类
@Bean声明在方法上,将方法的返回值加入Bean容器
@Value属性注入
@Configurationproperties(prefix="jdbc")批量属性注入
@propertysource(classpath:/jdbc.properties")指定外部属性文件,在类上添加
6.2@Value属性注入
单属性注入,不需要生成set,get方法
@Value("${jdbc.url}")
6.3@Configurationproperties
批量注入,需要生成set,get方法
@Configurationproperties(prefix="jdbc")
6.4第三方配置
在@Bean上面加上@Configurationproperties(prefix="jdbc")
@Configuration public class MyService { @ConfigurationProperties(prefix = "person") @Bean public Person person(){ return new Person(); } }
6.5松散绑定
使用一些宽松的规则将环境属性绑定到@ConfigurationProperties Bean,因此环境属性名之间不需要完全匹配。
例如驼峰命名法。泰森模式(-),下划线模式(_),全大写
7、日志框架
7.1日志框架介绍
项目开发中必不可少的记录事件的组件。
在构建的时候,是怎么样的一个构建设计思想?
通常情况下,日志是由一个抽象层+实现层的组合来搭建的。
spring框架选择使用JCL作为默认日志输出,而springboot默认选择了SLF4J结合logback
7.2SLFJ的使用
导入slf4j的jar包,适配器,具体实现
7.3统一日志框架的使用
问题:第三方框架会有自己的日志框架,与springboot产生冲突
使用步骤:
1、排除系统中其他的日志框架
2、使用中间包替换要替换的日志框架
3、导入我们选择的SLF4J实现
7.4springboot的日志关系
1、排除系统中其他的日志框架
<dependency>
<exclusion>
2、使用中间包替换要替换的日志框架
jul-to-slf4j
log4j-to-slf4j
3、导入我们选择的SLF4J实现
默认使用logback实现,如果使用其他的,替换即可
7.5springboot日志使用
Logger logger = LoggerFactory.getLogger(this.getClass());
日志级别(从小到大):
logger.trace();
logger.debug();
logger.info(); //默认级别
logger.warn();
logger.error();
7.6springboot自定义日志输出
在application.properties中配置
指定日志级别:logging.level.com.wangj(具体包的路径)=trace
指定控制台日志的输出格式:logging.pattern.console=
指定日志输出路径:logging.file.name=my.log logging.file.path=/var/log(会自动创建spring.log)
指定文件日志的输出格式:logging.pattern.file=
7.7替换日志框架
<exclusion>:spring-boot-starter-logging
<dependency> spring-boot-starter-log4j2