Spring Boot概念
- SpringBoot的产生是为了简化Spring程序开发的。
- SpringBoot优点:
(1)快速集成框架,SpringBoot提供了启动添加依赖的功能,用于秒级集成各种框架。 (2)内置运行容器,无需配置Tomcat等web容器,直接运行和部署程序。 (3)快速部署项目,无需外部容器即可启动并运行项目。 (4)完全可以抛弃繁琐的xml,使用注解和配置的方式进行开发。 (5)支持更多的监控的指标,可以更好的了解项目的运行情况。
Spring Boot项目创建
通过idea创建Spring Boot
(一)社区版需要安装Spring Assistant插件 (二)创建项目
(三)输出hello world
@Controller
public class UserController {
@ResponseBody
@RequestMapping("/sayhi")
public String sayHi(){
return "hello world";
}
结果:
(1)需要将对象托管到springBoot的对象,必须要放在SpringBoot启动类的根路径或子路径中,否则不能被框架识别。 (2)SpringBoot配置比较少,但是SpringBoot的设计思想是:约定大于配置。
SpringBoot配置文件
配置文件作用
整个项目中所有重要的数据都是在配置文件中配置的: (1)数据库的连接信息 (2)项目的启动端口 (3)第三方系统的调用秘钥等信息 (4)用于发现和定位问题的普通日志和异常日志等
配置文件的分类
(1)系统的配置文件,比如连接字符串,日志的相关设置,系统定义好的。 (2)用户自定义的。
配置文件的格式
- Spring Boot配置文件主要分为两种格式:
(1).properties (2).yml 规则: (1)一个项目中可以存在两种配置文件,但是不建议一个项目中出现两种配置文件。 (2)
如果properties文件没有提示信息,那么就需要安装spring Tools插件
properties配置文件
properties配置文件是最早期的配置文件格式,也是创建Spring Boot项目默认的配置文件。
- properties配置文件的基本语法:
key=value
server.port=8080
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/testdb?
characterEncoding=utf8
spring.datasource.name=root
spring.datasource.password=11
关于properties乱码的问题处理:
- 读取配置文件:
使用@Value注解来实现读取配置文件中的内容。
public class UserController {
@Value("${server.port}")
private String port;
yml配置文件
yml最大的优势是可以跨语言。
- yml基本语法:
key: value - yml特点:
(1)写法简单,可读性高 (2)支持更多的数据类型 (3)跨语言使用:java,golang,python
- properties和yml连接数据库的配置对比:
- yml单双引号问题:
总结:yml中如果使用了双引号就会按照原语义执行,如果不加单,双引号,或者加了单引号,那么默认会将字符串中的特殊字符进行转义
- 配置和读取对象
使用注解@ConfigurationProperties来读取
# 对象写法1
student:
id: 1
name: zhangsan
age: 20
# 对象写法2
student2: {id: 2,name: lisi,age: 20}
@Data
@ConfigurationProperties(prefix = "student")
@Component
public class student {
private int id;
private String name;
private int age;
}
# 集合写法
dbtypes: {name: [mysql,sqlserver,db2]}
@Component
@Data
@ConfigurationProperties("dbtypes")
public class ReadList {
private List<String> name;
}
SpringBoot日志文件
日志作用
日志除了发现和定位问题之外,还有的功能: (1)记录用户登录日志,方便分析用户是正常登录还是恶意破解用户。 (2)记录系统的操作日志,方便数据恢复和定位操作人。 (3)记录程序的执行时间,方便为以后优化程序提供数据支持。
自定义日志打印
自定义打印日志的实现步骤: 1,在一个类中先获取到打印日志对象
2,使用日志对象提供的方法实现日志的打印
@Controller
@ResponseBody
public class UserController {
private final static Logger log= LoggerFactory.getLogger(UserController.class);
@RequestMapping("/sayhi")
public void sayHi(){
log.trace("我是trace");
log.debug("我是debug");
log.info("我是info");
log.warn("我是warn");
log.error("我是error");
}
}
日志级别
- 日志级别分为:
(1)trace:少许的日志(级别最低)。 (2)debug:调试日志。 (3)info:普通信息日志。 (4)warn:警告日志。 (5)error:错误日志。 (6)fatal:致命的日志(系统输出的日志,不能自定义打印) - 日志级别顺序:
- 设置日志级别:
# 设置全局的日志级别
logging.level.root=warn
#设置局部文件夹的日志级别
logging.level.com.example.demo.controller=trace
注:局部日志级别优先级高于全局的日志级别
日志的持久化
日志的持久化就是将日志呢永久的保存到磁盘的某个位置。 1,在配置文件中设置日志的保存路径,当设置了保存路径之后,那么日志就会自动的进行持久化。
# 正确设置日志路径的方式1
# 设置日志保存的目录
logging.file.path=E:/javase/
# 正确设置日志路径的方式2
logging.file.path=E:\\javase\\
2,在配置文件中设置日志保存的名称,日志就自动进行持久化
# 设置日志的保存名称
logging.file.name=E:\\javase\\spring-boot.log
更简单的实现自定义日志的打印-lombok
1,准备工作:添加lombok到当前项目
步骤:
2,使用@Slf4j 获得日志对象log 3,使用log对象自定义打印对象
@Controller
@ResponseBody
@Slf4j
public class UserService {
@RequestMapping("/sayhi1")
public void sayHi1(){
log.trace("我是trace");
log.debug("我是debug");
log.info("我是info");
log.warn("我是warn");
log.error("我是error");
}
}
|