Springboot
传统SSM
utfmb4字符集是可以存一些表情符号的,utf8不能
spring版本严格一致
引入依赖
spring的版本应该严格一致
- spring的配置文件必须引入依赖之后才能加载出来(刷新依赖)
<!--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配置
注意:tx不要选错了
<!--开启注解扫描-->
<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模板
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
解决方法:
添加依赖
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.3</version>
</dependency>
现有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的优势
创建完整的独立的Spring应用程序spring springmvc 只有一个容器(ssm中spring和springmvc有父子容器概念)
嵌入的Tomcat,无需部署WAR文件springboot 内嵌tomcat 应用跑在内嵌服务器简化Maven配置,自动配置Spring Springmvc,没有XML配置几个依赖
a. 用来springboot spring应用再无xml
SpringBoot的约定
-
springboot 项目中必须在src/main/resources中放入application.yml(.properties)核心配置文件,名字必须为: application
-
springboot约定springboot项目中有且只能存在一个入口类(Class) 类名: 推荐 xxx(项目名) Application.java
a. 入口类必须在所有子包之上
b. 入口类中必须存在一个启动项目项目main函数
环境搭建
新建项目中引入依赖
继承springboot的父项目单纯是为了便于维护版本,父项目不引入依赖
引入springboot的web支持:
<!--继承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的项目启动默认项目名
- 访问路径: http://localhost:8080/hello/hello
- 测试控制器 测试地址: http://Localhost:端口号/项目名/请求路径
springboot项目默认启动没有项目名
修改内嵌服务器端口
server:
port: 8989
修改应用名称
server:
servlet:
context-path: /springboot_day1 #修改项目名,项目名必须 "/"开头
访问路径: http://localhost:8089/springboot_day1/hello/hello
相关注解说明 入口类 SpringApplication
- SpringBootApplication: 全局入口类 有且只能有一个
- main 函数参数可以在启动时指定jvm参数覆盖默认配置
@SpringBootApplication 注解
/**
@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中也提供这个方式来启动项目如:
如果打成jar包就写:java -jar --spring.config.location=绝对路径 xxx.jar
工厂创建对象
springboot 微框架 = spring(工厂)用来管理项目对象 创建项目中对象
+
springmvc(控制器)controller
spring 工厂 创建对象
2种形式:
-
基于配置文件形式创建对象
spring.xml
<bean id="" class="xxx.xxServiceImpl"/>
<bean id="" class="xxx.xxServiceImpl"/> -
基于注解方式创建对象
@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
注入数组:
注入list和注入数组一致
maps注入
对象方式注入
@ConfigurationProperties()
注意:使用这个注解为属性一次赋值 必须为属性提供set方法
提供set方法
引入依赖构建自定义注入元数据
<!-- 这个依赖可以根据@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>
添加头部
<%@page pageEncoding="UTF-8" contentType="text/html; UTF-8" isELIgnored="false" %>
配置视图解析器
#在配置文件中引入视图解析器
spring:
mvc:
view:
prefix: / # /代表访问项目中webapp中页面
suffix: .jsp
解决方案:引入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
第一种方式使用插件启动
第二种方式使用idea中指定工作目录启动访问JSP
修改jsp无须重启应用
开启jsp开发模式
server:
servlet:
jsp:
init-parameters:
development: true
整合Mybatis框架
springboot 微框架 = spring 工厂 + springmvc 控制器
数据库访问框架:hibernate jpa mybatis(框架)
springboot框架中如何整合mybatis框架?
回顾:spring框架如何整合mybatis?
-
引入依赖
spring 相关
mysql 相关 驱动 数据源
mybatis 相关 mybatis核心jar mybatis和spring框架整合 -
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). 建表
2). 开发实体类
3). 开发Dao接口
4). 开发Mapper配置文件
5). 开发Service接口
6). 开发ServiceImpl实现类
7). 测试ServiceImpl
springboot框架如何整合mybatis框架?
-
引入依赖
springboot-starter-web (这一个依赖就把之前spring相关的一堆依赖涵盖了)
mysql 相关 mysql驱动 druid数据源 mybatis相关的(mybatis-spring-boot-stater)依赖 (包含了mybatis和 mybatis-spring) -
书写配置
a. 开启注解扫描 @SpringbootApplication @ComponentScan 省略
b. 创建数据源- 指定数据源类型
- 指定数据库驱动
- 指定url
- 指定username
- 指定password
c. 创建SqlSessionFactory
- 指定mapper配置文件位置
- 指定实体所在包位置 起别名
d. 创建DAO
- 指定Dao接口所在包
e. 创建事务管理器 开启注解式事务生效 省略
-
测试
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版本,否则会出现冲突`
-->
配置配置文件
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目录里面新建目录要用 “/”隔开
加入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);
}
}
注意
中间是\
建表
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();
}
}
在启动类上写 @MapperScan("com.wbr.dao") 和在dao上写@Mapper效果是一样的
本地测试
spring中本地测试
- 启动工厂
ApplicationContext context=new ClassPathXmlApplicationContext("spring.xml"); - 从工厂中获取指定对象 UserDao userDao = context.getBean("userDao");
- 调用方法 userDao.xxx(参数)
springboot框架中完成本地测试?
springboot=spring + springmvc
- 引入结合junit和springboot依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<!-- 只能在测试时可用-->
<scope>test</scope>
</dependency>
- 编写测试类
-
@SpringBootTest- 修饰范围: 用在类上
- 作用: 用来启动本地Spring环境
- 继承BasicTests
@SpringBootTest
public class BasicTest {
}
热部署工具 (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 这个选项
启动项目检测热部署是否生效
启动出现如下日志代表生效
注意:日志出现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中默认有日志依赖了
注意: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";
}
}
日志的代码可以不用删,把级别调低就不会显示了(日志级别越高,显示的信息就越多)
把android相关的勾去掉更好使
快捷打印log日志
插件
参考
1.编程不良人.springboot