Springboot(一)

148 阅读14分钟

Springboot

传统SSM

image.png

utfmb4字符集是可以存一些表情符号的,utf8不能

spring版本严格一致

引入依赖

image.png

spring的版本应该严格一致

  1. spring的配置文件必须引入依赖之后才能加载出来(刷新依赖)

image.png

<!--spring-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>5.3.6</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>5.3.6</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>5.3.6</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.3.6</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>5.3.6</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.3.6</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>5.3.6</version>
        </dependency>
<!--spring web mvc-->
<dependency>
       <groupId>org.springframework</groupId>
       <artifactId>spring-webmvc</artifactId>
       <version>5.3.6</version>
</dependency>
<!--druid-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.4</version>
        </dependency>
<!--mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.38</version>
        </dependency>
<!--mybatis-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.6</version>
        </dependency>

        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>2.0.6</version>
        </dependency>
<!--  jackson-->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.3</version>
        </dependency>
<!-- aspectj aop切面 -->
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.9.5</version>
        </dependency>
<!--aspectj -->
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjrt</artifactId>
            <version>1.9.5</version>
        </dependency>

创建spring配置

image.png

注意:tx不要选错了 image.png

image.png

<!--开启注解扫描-->
<context:component-scan base-package="com.baizhi.service">
  <context:exclude-filter type="aspectj" expression="com.baizhi.controller..*"/>
</context:component-scan>

<!--  创建DataSource-->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
  <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
  <property name="url" value="jdbc:mysql://localhost:3306/ssm?characterEncoding=UTF-8"/>
  <property name="username" value="root"/>
  <property name="password" value="root"/>
</bean>

<!--  创建 SQLSessionFactoryBean -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  <property name="dataSource" ref="dataSource"/>
  <property name="mapperLocations" value="classpath:com/baizhi/mapper/*.xml"/>
  <property name="typeAliasesPackage" value="com.baizhi.entity"/>
</bean>

<!--  创建dao -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
  <property name="basePackage" value="com.baizhi.dao"/>
</bean>

<!--  创建事务管理器-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  <property name="dataSource" ref="dataSource"/>
</bean>

<!-- 开启注解事务生效-->
<tx:annotation-driven transaction-manager="transactionManager"/>

创建springmvc配置

<!--    注解扫描-->
<context:component-scan base-package="com.baizhi.controller"/>

<!-- 开启注册驱动-->
<mvc:annotation-driven/>

<!-- 配置视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  <property name="prefix" value="/"/>
  <property name="suffix" value=".jsp"/>
</bean>

配置web.xml

<!--配置工厂配置-->
<context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>classpath:spring.xml</param-value>
</context-param>

<listener>
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<!--配置springmvc-->
<servlet>
  <servlet-name>springmvc</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <init-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:springmvc.xml</param-value>
  </init-param>
</servlet>
<servlet-mapping>
  <servlet-name>springmvc</servlet-name>
  <url-pattern>/</url-pattern>
</servlet-mapping>

new一个mapper

新建mapper模板

image.png

image.png

mapper配置文件头:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="dao类的全限定文件名">

    
</mapper>

使用 SSM使用@RestController,将返回值转为json响应到浏览器报错406

image.png

解决方法:
添加依赖

<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-databind</artifactId>
  <version>2.9.3</version>
</dependency>

image.png

现有SSM开发存在问题

  • 大量maven冗余配置
  • 每次构建项目都要书写大量相同配置极大浪费了项目开发时间
  • 每次整合第三方技术都需要编写相关配置文件
  • 项目测试每次都需要部署到tomcat

注意: 这就是早期的SSM或者SSH开发存在问题, 是不是很麻烦

SpringBoot引言

  • Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不 再需要定义样板化的配置。
    通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域 (rapid application development) 成为领导者。

  • Spring Boot 全新框架作用: 简化spring应用初始搭建和开发过程。

  • 如何简化: 开发人员使用springboot只要基于特定方式进行配置 简化spring使用。

  • SpringBoot微框架: 5分钟 完成之前ssm中环境

springboot(微框架) = springmvc(控制器) + spring core(项目管理)

SpringBoot的优势

  1. 创建完整的独立的Spring应用程序 spring springmvc 只有一个容器(ssm中spring和springmvc有父子容器概念)

image.png

image.png

  1. 嵌入的Tomcat,无需部署WAR文件 springboot 内嵌tomcat 应用跑在内嵌服务器
  2. 简化Maven配置,自动配置Spring Springmvc,没有XML配置 几个依赖
    a. 用来springboot spring应用再无xml

SpringBoot的约定

image-20200321091519423.png

  1. springboot 项目中必须在src/main/resources中放入application.yml(.properties)核心配置文件,名字必须为: application

  2. springboot约定springboot项目中有且只能存在一个入口类(Class) 类名: 推荐 xxx(项目名) Application.java
    a. 入口类必须在所有子包之上
    b. 入口类中必须存在一个启动项目项目main函数

环境搭建

新建项目中引入依赖
继承springboot的父项目单纯是为了便于维护版本,父项目不引入依赖

引入springboot的web支持: image.png

<!--继承springboot的父项目-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.0</version>
    </parent>

    <dependencies>
      	<!--引入springboot的web支持-->        
       <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

引入配置文件
项目中 src/main/resources/application.yml

编写入口类

//这个注解修饰范围:用在类上,只能用在入口类上
//作用:标识这个类是一个springboot入口类,启动整个springboot项目总入口
//总结:1.pom文件引入依赖  2.resources生成application.yml 3.创建入口类加入@SpringBootApplication注解,在main中启动应用
@SpringBootApplication
public class Springboot_01Application {
    public static void main(String[] args) {

        //启动springboot应用
        //参数1:指定入口类的类对象 .class
        //参数2:main函数参数
        SpringApplication.run(Springboot_01Application.class,args);
    }
}
//在项目中如下的包结构中创建入口类 Application
/*
	com
		+| baizhi
*/
    @SpringBootApplication
    public class Application {
      public static void main(String[] args) {
        SpringApplication.run(Application.class,args);
      }
    }

运行main启动项目

o.s.j.e.a.AnnotationMBeanExporter        : Registering beans for JMX exposure on startup
s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
com.baizhi.Application : Started Application in 2.152 seconds (JVM running for 2.611)
//说明:  出现以上日志说明启动成功

以上项目启动完成!

建包并创建控制器

//在项目中创建指定的包结构
/*
	 com
	    +| baizhi
	    		+| controller */ 
                	@Controller
                  @RequestMapping("/hello")
                  public class HelloController {
                    @RequestMapping("/hello")
                    @ResponseBody
                    public String hello(){
                      	System.out.println("======hello world=======");
                      return "hello";
                    }
                  }

访问项目
注意: springboot的项目启动默认项目名

修改内嵌服务器端口

server:
    port: 8989

修改应用名称

server:
  servlet:
    context-path: /springboot_day1 #修改项目名,项目名必须 "/"开头

image.png 访问路径: http://localhost:8089/springboot_day1/hello/hello

相关注解说明 入口类 SpringApplication

  • SpringBootApplication: 全局入口类 有且只能有一个
  • main 函数参数可以在启动时指定jvm参数覆盖默认配置

@SpringBootApplication 注解

image.png

image.png

/**
    @SpringBootApplication 注解: 
        组合注解:就是由多个注解组合而成一个注解
        元注解:用来修饰注解的注解 
    @SpringBootConfiguration:这个注解就是用来自动配置spring springmvc(初始化 servlet..) 相关环境
    @EnableAutoConfiguration:开启自动配置,自动配置核心注解,自动配置spring相关环境,自动与项目中引入第三方技术自动配置其环境  
        mybatis-springboot 、redis-springboot、rabbitmq第三方技术
    @ComponentScan:组件扫描 根据注解发挥注解作用 默认扫描当前包及其子包。想要扫描上一级的包可以用@ComponentScan覆盖
    
*/

配置文件

配置文件的拆分

# 主配置文件:
- application.yml	#用来书写相同的的配置
				server:
					port: 8080 #生产和测试端口一致
                   
# 生产配置文件:
- application-pord.yml #prod为配置文件简名
    			server:
    				context-path: /cmfz
    
#测试配置文件:
-	application-dev.yml  #dev为配置文件简名
    			server:
    				context-path: /springboot

#在主配置中指定那个环境生效配置
spring:
  profiles:
    active: dev #指定那个环境配置生效 dev为环境配置文件的简名

启动指定外部配置文件

说明: 往往在企业级开发过程中为SpringBoot应用启动时指定一个完整外部配置也是经常用到的,在SpringBoot中也提供这个方式来启动项目如:

image.png

image.png

image.png

image.png

image.png

如果打成jar包就写:java -jar --spring.config.location=绝对路径  xxx.jar

工厂创建对象

springboot 微框架 = spring(工厂)用来管理项目对象  创建项目中对象
+
springmvc(控制器)controller

spring 工厂 创建对象
2种形式:

  1. 基于配置文件形式创建对象
    spring.xml
    <bean id="" class="xxx.xxServiceImpl"/>
    <bean id="" class="xxx.xxServiceImpl"/>

  2. 基于注解方式创建对象
    @Component 作用:就是在工厂中创建对象 通用对象创建注解
    @Controller: 创建控制器注解
    @Service: 创建业务层注解
    @Repository: 创建dao层注解 mybatis

SpringBoot创建对象
a. 使用原始spring框架中注解创建对象
@Component 作用:就是在工厂中创建对象 通用对象创建注解
@Controller: 创建控制器注解
@Service: 创建业务层注解
@Repository: 创建dao层注解 mybatis

创建单个对象

在springboot中可以管理单个对象可以直接使用spring框架中注解形式创建。

  • @Component 通用的对象创建注解

    • @Controller 用来创建控制器对象

    • @Service 用来创建业务层对象

    • @Repository 用来创建DAO层对象

      • 以上注解都有value属性,value属性用来指定工厂中对象名称

@Qualifier,用来修改autowired默认不再根据类型注入,修改为根据名称注入

//作用:用来修改autowired默认不在根据类型注入,修改为根据名称注入
@Qualifier(value = "demoService")
private DemoService demoService;

//修饰范围:用在类上 作用:在工厂中创建对象 默认:工厂中名称为 类名首字母小写
//value属性:用来指定当前创建对象在工厂中的名称
@Service("demoService") 
public class DemoServiceImpl implements DemoService {

}

创建多个对象

使用配置方式创建对象
@Configuration: 修饰范围,用在类上 ===》spring.xml
作用:代表这个类是一个springboot中配置类

@Bean注解:创建对象  相当于 spring.xml  书写bean

@Configuration
public class BeanConfig{
    
    @Bean
    public User user(){
        return new User();
    }
    @Bean
    public Emp emp(){
        return new Emp();
    }
}

注入

spring框架中属性注入

set注入  灵活  构造注入  自动注入

@Autowired: spring框架 默认根据类型注入  
@Resource: javaEE 规范 默认根据名称注入 自动根据类型注入

成员变量上
成员变量 set方法上

八种基本类型 + String类型 + 日期类型value + 数组 + set list map标签集合类型属性注入

@Value("xx")
private string name;

<bean>
    <property name="name" value="wangbr">
    <property name="qqs">
        <array>
            <value>xxxx</value>
        </array>
    </property>
</bean>

springboot框架中属性注入

属性注入:
@Value注解
@Autowired注解
@Resource

image.png

image.png

image.png

注入数组: image.png

image.png

注入list和注入数组一致

maps注入

image.png

image.png

对象方式注入

@ConfigurationProperties()

注意:使用这个注解为属性一次赋值 必须为属性提供set方法

image.png

image.png

提供set方法 image.png

引入依赖构建自定义注入元数据 image.png

<!--        这个依赖可以根据@ConfigurationProperties构建注入元数据-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
<!--            代表这个依赖不会被传递(只有当前项目可用,不会传递到子项目-->
            <optional>true</optional>
        </dependency>

JSP模板集成

在SpringBoot框架中默认模板推荐使用Thymeleaf模板,这里JSP模板集成

引入jsp的集成jar包

<!--c标签库-->
<dependency>
    <groupId>jstl</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>

<!--让内嵌tomcat具有解析jsp功能-->
<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
</dependency>

image.png

添加头部

<%@page pageEncoding="UTF-8" contentType="text/html; UTF-8" isELIgnored="false" %>

image.png

image.png

配置视图解析器

#在配置文件中引入视图解析器
spring:
  mvc:
    view:
      prefix: /     # /代表访问项目中webapp中页面
      suffix: .jsp 

image.png

image.png

解决方案:引入jsp运行插件

<build>
    <finalName>springboot_day1</finalName>
    <!--引入springboot插件 可以正确打包  显示jsp-->
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

启动访问JSP

第一种方式使用插件启动

image.png

第二种方式使用idea中指定工作目录启动访问JSP

image.png

image.png

修改jsp无须重启应用

开启jsp开发模式

server:
  servlet:
    jsp:
      init-parameters:
        development: true 

整合Mybatis框架

springboot 微框架 = spring 工厂 + springmvc 控制器

数据库访问框架:hibernate jpa mybatis(框架)

springboot框架中如何整合mybatis框架

回顾:spring框架如何整合mybatis?

  1. 引入依赖
    spring 相关
    mysql 相关  驱动  数据源
    mybatis 相关  mybatis核心jar  mybatis和spring框架整合

  2. spring.xml
    a. 开启注解扫描
    b. 创建数据源对象
    注入 指定使用哪种数据源  注入dirverClassName  注入url  注入username password
    c. 创建sqlSessionFactory 注入 数据源 注入mapper配置文件位置 注入实体别名包
    d. 创建Dao对象 注入SqlSessionFactory 以及 Dao接口所在包
    e. 创建事务管理器 DataSourceTranacationManager
    注入 数据源对象
    f. 在业务层组件加上事务注解 @Transacational

<!--开启注解事务生效 @Transactional,一定要选tx结尾的-->
<tx:annotation-driven transaction-manager="transactionManager"/>
  1. 测试
    1). 建表
    2). 开发实体类
    3). 开发Dao接口
    4). 开发Mapper配置文件
    5). 开发Service接口
    6). 开发ServiceImpl实现类
    7). 测试ServiceImpl

springboot框架如何整合mybatis框架?

  1. 引入依赖
    springboot-starter-web (这一个依赖就把之前spring相关的一堆依赖涵盖了)
    mysql 相关  mysql驱动  druid数据源 mybatis相关的(mybatis-spring-boot-stater)依赖 (包含了mybatis和 mybatis-spring)

  2. 书写配置
    a. 开启注解扫描 @SpringbootApplication @ComponentScan 省略
    b. 创建数据源

    1. 指定数据源类型
    2. 指定数据库驱动
    3. 指定url
    4. 指定username
    5. 指定password

    c. 创建SqlSessionFactory

    1. 指定mapper配置文件位置
    2. 指定实体所在包位置 起别名

    d. 创建DAO

    1. 指定Dao接口所在包

    e. 创建事务管理器 开启注解式事务生效 省略

  3. 测试
    1). 建表
    2). 开发实体类
    3). 开发Dao接口
    4). 开发Mapper配置文件
    5). 开发Service接口
    6). 开发ServiceImpl实现类
    7). 测试ServiceImpl

引入依赖

<!-- druid-->
<dependency>
  <groupId>com.alibaba</groupId>
  <artifactId>druid</artifactId>
  <version>1.2.4</version>
</dependency>

<!-- mysql-->
<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>8.0.15</version>
</dependency>

<!--整合mybatis-->
<!-- mybatis-spring-boot-->
<dependency>
  <groupId>org.mybatis.spring.boot</groupId>
  <artifactId>mybatis-spring-boot-starter</artifactId>
  <version>2.1.4</version>
</dependency>

<!--
  说明:由于springboot整合mybatis版本中默认依赖mybatis 因此不需要额外引入mybati版本,否则会出现冲突`
  -->

image.png

配置配置文件

spring:
  mvc:
    view:
      prefix: /
      suffix: .jsp
datasource:
  type: com.alibaba.druid.pool.DruidDataSource
  driver-class-name: com.mysql.cj.jdbc.Driver  #Mysql8的驱动
  url: jdbc:mysql://localhost:3306/bootssm?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false
  username: root
  password: 1111

在resource目录里面新建目录要用 “/”隔开 image.png

加入mybatis配置

#配置文件中加入如下配置:

mybatis:
  mapper-locations: classpath:com/baizhi/mapper/*.xml  #指定mapper配置文件位置
  type-aliases-package: com.baizhi.entity     #指定起别名所在包
//入口类中加入如下配置:
@SpringBootApplication
//必须在入口类中加入这个配置,作用:用来扫描dao接口所在包 同时将所有dao接口在工厂中创建对象
@MapperScan("com.baizhi.dao")   
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class,args);
    }
}

注意

中间是\

image.png

建表

CREATE TABLE `t_clazz` (
  `id` varchar(40) NOT NULL,
  `name` varchar(80) DEFAULT NULL,
  `no` varchar(90) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

开发实体类

public class Clazz {
    private String id;
    private String name;
    private String no;
    //get set 方法省略....
}

开发DAO接口以及Mapper

public interface ClazzDAO {
    List<Clazz> findAll();
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.baizhi.dao.ClazzDAO">
    <select id="findAll" resultType="Clazz">
        select * from t_clazz 
    </select>
</mapper>

开发Service以及实现

//接口
public interface ClazzService {
    List<Clazz> findAll();
}

@Service
@Transactional
public class ClazzServiceImpl implements  ClazzService {
    @Autowired
    private ClazzDAO clazzDAO;

    @Transactional(propagation = Propagation.SUPPORTS)
    @Override
    public List<Clazz> findAll() {
         return clazzDAO.findAll();
    }    
}

image.png

image.png

在启动类上写 @MapperScan("com.wbr.dao") 和在dao上写@Mapper效果是一样的

本地测试

spring中本地测试

  1. 启动工厂
    ApplicationContext context=new ClassPathXmlApplicationContext("spring.xml");
  2. 从工厂中获取指定对象 UserDao userDao = context.getBean("userDao");
  3. 调用方法 userDao.xxx(参数)

springboot框架中完成本地测试?
springboot=spring + springmvc

  1. 引入结合junit和springboot依赖
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <!-- 只能在测试时可用-->
     <scope>test</scope>
</dependency>
  1. 编写测试类
  • @SpringBootTest

    • 修饰范围: 用在类上
    • 作用: 用来启动本地Spring环境
  1. 继承BasicTests
@SpringBootTest
public class BasicTest {
}

image.png

热部署工具 (idea2022版)

为了进一步提高开发效率,springboot为我们提供了全局项目热部署,日后在开发过程中修改了部分代码以及相关配置文件后,不需要每次重启使修改生效,在项目中开启了springboot全局热部署之后只需要在修改之后等待几秒即可使修改生效。

开启热部署
项目中引入依赖 (每次搭建项目都需要引入)

<!-- 热部署依赖 devtools-->
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-devtools</artifactId>
   <!-- optional: 该依赖是否可以传递-->
   <optional>true</optional>
</dependency>

设置idea中支持自动编译(只需要设置一次)

# 1.开启自动编译

	Preferences | Build, Execution, Deployment | Compiler -> 勾选上 Build project automatically 这个选项

# 2.勾选 compiler.automake.allow.when.app.running 这个选项

image.png

image.png

启动项目检测热部署是否生效

启动出现如下日志代表生效

image.png 注意:日志出现restartedMain代表已经生效,在使用热部署时如果遇到修改之后不能生效,请重试重启项目再试

日志处理

引言

springboot框架 集成日志 logback 日志

Logback是由 log4j 创始人设计的又一个开源日志组件。目前,logback分为三个模块:logback-core,logback-classic和logback-access。是对log4j日志展示进一步改进!

总结: logback 也是一个开源日志组件 和 log4j作用一致 都是用来生成日志 logback更加轻量

日志的级别

> All > Trace > DEBUG > INFO > WARN > ERROR > Fatal > OFF

- OFF   | 关闭:最高级别,不打印日志。 
- FATAL | 致命:指明非常严重的可能会导致应用终止执行错误事件。
- ERROR | 错误:指明错误事件,但应用可能还能继续运行。 
- WARN | 警告:指明可能潜在的危险状况。 
- INFO | 信息:指明描述信息,从粗粒度上描述了应用运行过程。 
- DEBUG | 调试:指明细致的事件信息,对调试应用最有用。
- TRACE | 跟踪:指明程序运行轨迹,比DEBUG级别的粒度更细。 
- ALL | 所有:所有日志级别,包括定制级别。

> 日志级别由低到高:  日志级别越高输出的日志信息越多

项目中日志分类

# 日志分类:
- 一种是rootLogger(根全局日志) :  用来监听项目中所有的运行日志 包括引入依赖jar中的日志 

- 一种是logger(指定包级别日志) :    用来监听项目中指定包中的日志信息

配置日志

springboot中默认有日志依赖了

image.png

注意:SpringBoot框架中默认根日志为INFO

logging:
  level:
    root: debug #指定根日志级别 (一般不推荐修改根日志,输出信息太多,推荐使用子日志)
    com.baizhi.dao: debug #指定某个包中日志
    org.springframework: debug #指定不是自己写的包中日志
    
  #上面只是把日志输出到控制台,以下是把日志输出到文件中
  file:    
    name: aaa.log #指定日志名称
    path: ./  #指定日志文件目录(当前项目的目录中)

项目中使用日志

@Controller
public class HelloController {
    //声明日志成员
    private static final Logger log = LoggerFactory.getLogger(HelloController.class);
    @RequestMapping("/hello")
    @ResponseBody
    public String hello(){
        System.out.println("======hello world=======");
        logger.debug("DEBUG,{}","信息");
        logger.info("INFO,{}","信息");
        logger.warn("WARN,{}","信息");
        logger.error("ERROR,{}","信息");
        return "hello";
    }
}

image.png

image.png

日志的代码可以不用删,把级别调低就不会显示了(日志级别越高,显示的信息就越多)

image.png

把android相关的勾去掉更好使

image.png

快捷打印log日志

插件

image.png

image.png

image.png

参考
1.编程不良人.springboot