目录
🔫Spring Boot入门
简介:
SpringBoot用来简化Spring应用开发,是整个Spring技术栈的大整合,约定大于配置
优点:
快速创建独立运行的Spring项目
使用嵌入式的Servlet容器,应用无需打成WAR包
starters(启动器)自动依赖与版本控制
大量的自动配置,简化开发,也可修改默认值
无需配置XML,无代码生成,开箱即用
准生产环境的运行时应用监控
与云计算天然集成
微服务:
是一种架构风格,一个应用是一组小型服务,通过HTTP的方式进行互通
每一个功能元素最终都是一个可独立替换、独立升级的软件单元
🔫Spring Boot使用说明
◾创建一个maven工程
◾在pom.xml内添加SpringBoot依赖
<!--父项目:Spring Boot的版本仲裁中心,在dependencies里面管理的依赖的版本号,以后我们导入springboot管理的依赖默认不需要写版本号-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.2.RELEASE</version>
</parent>
<dependencies>
<!--spring-boot-starter:spring-boot场景启动器,这里导入了web模块正常运行所依赖的组件;
Spring Boot将所有的功能场景抽取出来,做成一个个的starters(启动器),只需要在项目里面引入这些starter,相关场景的所有依赖都会导入进来。-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
◾主程序类
/**
* SpringBootApplication注解代表该类是springboot主程序类
* SpringBoot运行这个类的main方法来启动SpringBoot应用
* @author XJH
*/
@SpringBootApplication
public class HelloWorldMainApplication {
public static void main(String[] args) {
SpringApplication.run(HelloWorldMainApplication.class,args);
}
}
◾@SpringBootApplication
注解
@SpringBootConfiguration
标注在某个类上,表示这是一个Spring Boot的配置类
@EnableAutoConfiguration
开启自动配置功能
包括将@SpringBootApplication
标注的类的所在包及下面所有子包里面的所有组件扫描到Spring容器。
🔫Spring Initializer快速搭建Spring Boot项目
◾选择Spring Initializer创建项目
◾选择模块(自动添加启动器)
◾完成创建
🔫SpringBoot的配置
🔰配置文件
◾SpringBoot使用一个全局的配置文件
配置文件名为application.properties
或 application.yml
◾作用:修改SpringBoot自动配置的默认值
🔰YAML语法
◾k:(空格)v
表示一对键值对(冒号后必须有空格)
◾空格的缩进来控制层级关系,左对齐的一列数据是同一层级
🔰注入配置文件的值
配置文件(yml)
person:
lastName: simao
age: 21
birth: 1999/08/17
maps: {k1: v1,k2: v2}
lists:
‐sz
‐lg
-gz
配置注入的JavaBean
/**
* 将配置文件中配置的每一个属性的值,映射到这个组件中
* @ConfigurationProperties:告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定
* prefix = "person":与配置文件中person的所有属性进行一一映射
* 需要先把组件放入容器中,才能使用容器提供的@ConfigurationProperties功能
* ConfigurationProperties默认从全局配置文件中获取属性值
*/
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
private String lastName;
private Integer age;
private Date birth;
private Map<String,Object> maps;
private List<Object> lists;
public void setLastName(String lastName) {
this.lastName = lastName;
}
public void setAge(Integer age) {
this.age = age;
}
public void setBirth(Date birth) {
this.birth = birth;
}
public void setMaps(Map<String, Object> maps) {
this.maps = maps;
}
public void setLists(List<Object> lists) {
this.lists = lists;
}
}
🔰使用@Value
注入和@ConfigurationProperties
注入比较
@ConfigurationProperties | @Value | |
---|---|---|
功能 | 批量注入配置文件中的属性 | 需要一个个指定 |
松散绑定 | 支持 | 不支持 |
SpEL | 不支持 | 支持 |
JSR303数据校验 | 支持 | 不支持 |
复杂类型封装 | 支持 | 不支持 |
🔰@PropertySource
加载指定的配置文件
@PropertySource
指定加载某个配置文件
@ConfigurationProperties
指定加载文件中的哪一属性。
两个注解一起使用,解决了@ConfigurationProperties
只能加载全局配置文件内属性的问题。
🔰@ImportResource
:导入Spring的配置文件,@ImportResource
标注在一个配置类上,让配置文件里面的内容(bean)生效。但是SpringBoot不推荐这种方式给容器中添加组件。
SpringBoot推荐使用纯注解的方式(使用配置类@Configuration
代替Spring配置文件然后使用@Bean
给容器中添加组件,在Spring篇内Spring新注解一节详细介绍)
🔰配置文件占位符
可以使用占位符配置随机数 ${random.value}
还可以使用占位符获取之前配置的值 ${之前配置过的属性名:默认值}
🔰Profile
Profile是Spring对不同环境提供不同配置功能的支持,可以通过激活,指定参数等方式快速切换环境
多个Profile文件:
◾子文件格式 application-{profile}.properties/yml
◾profile是环境名称,例如application-development.properties
代表开发环境
◾YML配置文件还可以使用文档分块的方式设置Profile
激活指定的profile
◾在主配置文件application
中指定环境
例如:spring.profiles.active=development
即可切换为开发环境,端口号变为8081
◾命令行参数指定环境
🔰配置文件加载位置
springboot启动会扫描以下位置的application.properties或者application.yml文件作为默认配置文件。
根目录的config文件
根目录
classpath(resource文件夹)下的config文件
classpath下
优先级从高到底,高优先级的配置会覆盖低优先级的配置。
四个位置的主配置文件都会加载,形成互补。
🔰外部配置加载顺序
当项目打包成jar包后,SpringBoot还可以从以下位置进行配置加载
命令行参数 所有的配置都可以在命令行上指定
java -jar springboot_01-0.0.1-SNAPSHOT.jar --server.port=8081
jar包外部的配置文件优先级大于内部配置文件 springboot读取外部配置文件,只需要在jar包外添加一个配置文件覆盖默认的即可,无需修改代码
🔫Spring Boot自动配置原理
◾SpringBoot启动并加载主配置类,@EnableAutoConfiguration
开启自动配置功能
◾SpringBoot扫描所有jar包类路径下 META‐INF/spring.factories
获取自动配置类并添加到容器中
◾当一个配置类 (以AutoConfigurartion
为后缀的类) 生效,就会给容器中添加各种组件(使用@Bean
标签),组件的属性从对应的properties
类中获取,这些类里面的每一个属性是和配置文件绑定的。
◾总结:所以当我们要实现一个功能的时候,查看SpringBoot有没有默认的自动配置类可以实现,再看这个自动配置类中配置了哪些组件,配置类给容器中自动配置类添加组件的时候,会从properties类中获取某些属性。我们就可以在配置文件中指定这些属性的值。
💡@Conditional
注解的使用
作用:@Conditional
指定的条件成立,才给容器中添加组件,配置类里面的所有内容才生效。
@Conditional扩展注解 | 作用(判断是否满足当前指定条件) |
---|---|
@ConditionalOnJava | 系统的java版本是否符合要求 |
@ConditionalOnBean | 容器中存在指定Bean |
@ConditionalOnMissingBean | 容器中不存在指定Bean |
@ConditionalOnExpression | 符合指定的SpEL表达式 |
@ConditionalOnClass | 存在指定的类 |
@ConditionalOnMissingClass | 不存在指定的类 |
@ConditionalOnMissingClass | 不存在指定的类 |
@ConditionalOnSingleCandidate | 容器中只有一个指定的Bean,或指定的Bean是首选Bean |
@ConditionalOnProperty | 指定的property属性有指定的值 |
@ConditionalOnResource | 类路径下是否存在指定资源文件 |
@ConditionalOnWebApplication | 系统环境是web环境 |
@ConditionalOnNotWebApplication | 系统环境不是web环境 |
@ConditionalOnjndi | JNDI存在指定的项 |
自动配置类必须在一定的条件下才能生效,一般使用该注解进行控制。
可以在配置文件里配置debug=true
属性,来让控制台打印所有生效的自动配置类。
🔫SpringBoot与日志
日志门面 (抽象层) | 日志实现 |
---|---|
SLF4j(Simple Logging Facade for Java) | Log4j Logback |
◾SLF4j使用原理
调用日志记录方法,不应该来直接调用日志的实现类,而是调用日志抽象层的方法。
◾SLF4j使用图解
◾SLF4j问题
当程序有多个框架,每个框架有自己的日志实现,如何使用统一日志用SLF4J记录。
将系统中其他日志框架先排除出去
用中间包来替换原有的日志框架
导入slf4j其他的实现
SpringBoot通过上述原理适配所有的日志框架,底层使用slf4j+logback
的方式记录日志,当我们引入其他框架的时候,需要把这个框架依赖的日志框架排除。
◾日志的使用
SpringBoot对日志进行了默认的配置,可以直接使用
@SpringBootTest
class Springboot01ApplicationTests {
//得到日志记录器
Logger logger = LoggerFactory.getLogger(getClass());
@Test
void contextLoads() {
//日志级别由低到高trace<debug<info<warn<error
logger.trace("trace日志");
logger.debug("debug日志");
logger.info("info日志");
logger.warn("warn日志");
logger.error("error日志");
}
}
日志输出格式:
%d表示日期时间,
%thread表示线程名,
%‐5level:级别从左显示5个字符宽度
%logger{15} 表示logger名字最长15个字符,否则按照句点分割。
%msg:日志消息,
%n是换行符
我们还可以自己指定配置,不使用默认的配置
在类路径下放相应配置文件即可,使用logback-spring.xml配置文件,可以使用SpringBoot的高级Profile功能 。
🔫Spring Web开发
🏎快速使用SpringBoot进行开发
◾创建SpringBoot项目,选中我们所需的模块。
◾SpringBoot默认将所需要的场景配置好了,只需要在配置文件中
编写少量的配置就可以运行
◾编写业务代码
🏎SpringBoot静态资源的映射规则
◾WebJars统一管理静态资源 WebJars官网
◾/webjars/**
:在 classpath:/META-INF/resources/webjars/ 目录下得到静态资源
在WebJars官网找到项目所需的依赖,例如在jQuery、BootStrap等前端组件,然后在pom文件内引入依赖
◾/**
可以访问当前项目在以下的路径保存的所有静态资源
springboot的静态资源文件夹
– classpath:/META‐INF/resources/
– classpath:/resources/
– classpath:/static/
– classpath:/public/
– /:当前项目的根路径
◾静态资源文件夹下的index.html页面是springboot项目的欢迎页
◾静态资源文件夹下的favicon.ico文件是springboot项目的图标
🏎thymeleaf模板引擎
◾引入thymeleaf依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
◾Thymeleaf使用
✔只要将HTML页面放在classpath:/templates/
路径下,thymeleaf就能自动渲染。
✔在HTML页面导入thymeleaf的名称空间
<html lang="en" xmlns:th="http://www.thymeleaf.org">
✔实例
✔Thymeleaf语法
th:任意html属性
(替换原生属性的值)
Thymeleaf中内联表达式: [[...]]
或 [(...)]
中的表达式
表达式:
${...}
获取变量值;OGNL
#{...}
获取国际化内容
*{...}
选择表达式,当前对象/变量取值
@{...}
定义url表达式(与th:href一起使用)
~{...}
片段引用表达式
🏎springboot内SpringMVC的自动配置
◾springboot自动配置了许多SpringMVC基本组件,例如视图解析器、转换器
◾ 如何修改springboot的默认配置:
🎿springboot在自动配置很多组件的时候,先看容器中有没有用户自己配置的(@Bean
、@Component
),如果有就用用户自己配置的组件,如果没有才自动配置(@ConditionalOnMissingBean
);如果有的组件可以有多个,则将用户配置的和默认的组合起来。
🎿springboot内有许多的xxxConfigurer
帮助我们进行扩展配置。
🎿springboot内有许多的xxxCustomizer
帮助我们进行定制配置 。
◾ 扩展SpringMVC配置
方法一:编写一个扩展配置类(使用@Configuration
注解),实现WebMvcConfigurer
SpringMVC配置接口。
如果需要全面接管SpringMVC配置,再加上@EnableWebMvc
注解,使得sprintboot的SpringMVC的自动配置失效。
@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
//直接将/hello请求映射到success页面
registry.addViewController("/hello").setViewName("success");
}
}
方法二:在一个配置类里创建一个WebMvcConfigurer对象,并用放入IOC容器中
@Bean
public WebMvcConfigurer MyWebMvcConfigurer(){
return new WebMvcConfigurer() {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("login");
registry.addViewController("/index.html'").setViewName("login");
}
};
}
◾ 编写拦截器
首先编写一个拦截器类(实现HandlerInterceptor接口)
/**
* @author XJH
* 登陆检查拦截器
*/
public class LoginHandlerInterceptor implements HandlerInterceptor {
Logger logger = LoggerFactory.getLogger(getClass());
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
Object user=request.getSession().getAttribute("user");
logger.info("拦截!");
if(user==null){
request.setAttribute("msg","没有权限");
request.getRequestDispatcher("/index.html").forward(request,response);
return false;
}else{return true;}
}
}
然后需要在配置类(WebMvcConfigurer)里重写方法添加拦截器
@Override
public void addInterceptors(InterceptorRegistry registry) {
// "/**"代表拦截所有请求,excludePathPatterns是过滤以下请求
registry.addInterceptor(new LoginHandlerInterceptor()).addPathPatterns("/**").excludePathPatterns("/","/index.html","/user/login","/webjars/**");
}
🏎 实现国际化
springboot中自动装配好了国际化的组件,我们只需要编写国际化配置文件,然后就可以在页面内使用#{属性名}
表达式取出国际化的值
🏎SpringBoot 错误处理机制与定制错误页面
🌂原理:首先springboot是通过ErrorMvcAutoConfiguration
进行错误处理的自动配置。当系统出现4xx或者5xx的错误就会提交/error请求(浏览器请求BasicErrorController
的errorHtml()
方法返回modelAndView,APP等客户端error()
方法返回JSON数据)
🌂如何定制错误的页面
(1) 有模板引擎的情况:将错误页面命名为错误状态码.html
放在模板引擎文件夹里面的error文件夹下,发生此状态码的错误就会来到对应的页面 (使用4xx和5xx作为错误页面的文件名来匹配这种类型的所有错误 )
页面能获取的信息:
timestamp:时间戳
status:状态码
error:错误提示
exception:异常对象
message:异常消息
errors:JSR303数据校验的错误
(2) 没有模板引擎则静态资源文件夹下找,如果没有定制错误页面就使用SpringBoot默认的错误提示页面。
🌂定制错误数据
错误页面上能用的数据,或者返回json能用的数据都是通过getErrorAttributes()
方法得到的,可以自定义一个ErrorAttributes继承DefaultErrorAttributes
类改变返回的错误内容。
🏎配置springboot的嵌入式Servlet容器
◾修改Servlet容器的相关配置
//在配置文件里配置
server.port=8081
server.context‐path=/springboot
◾注册Servlet三大组件
使用ServletRegistrationBean 对象注册 Servlet
使用FilterRegistrationBean对象注册 Filter
使用ServletListenerRegistrationBean对象注册 Listener
@Configuration
public class MyServerConfig {
@Bean
public ServletRegistrationBean myServlet() {
//MyServlet参数是我们自定义的servlet类
ServletRegistrationBean registrationBean = new ServletRegistrationBean(new MyServlet(), "/Servlet");
return registrationBean;
}
@Bean
public FilterRegistrationBean myFilter() {
FilterRegistrationBean registrationBean = new FilterRegistrationBean();
//MyFilter是我们自定义的filter类
registrationBean.setFilter(new MyFilter());
registrationBean.setUrlPatterns(Arrays.asList("/hello", "/Servlet"));
return registrationBean;
}
@Bean
public ServletListenerRegistrationBean myListener() {
//MyListener是自己写的监听器类
return new ServletListenerRegistrationBean<>(new MyListener());
}
}
◾将tomcat替换为其他嵌入式Servlet容器
可以扩展的Servlet容器有三种:
这里以jetty替换tomcat为例:(在pom.xml移除tomcat依赖,加入jetty依赖)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<artifactId>spring-boot-starter-tomcat</artifactId>
<groupId>org.springframework.boot</groupId>
</exclusion>
</exclusions>
</dependency>
<!--引入jetty-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
◾与外置的Servlet容器对比
嵌入式Servlet容器
:应用打包成可执行的jar
优点:简单、便携
缺点:默认不支持JSP、优化定制比较复杂
外置的Servlet容器:使用外部安装的Tomcat,创建springboot需要将应用设置为以war包的方式打包。
两种方式不同的原理
jar包:执行SpringBoot主类的main方法,启动ioc容器,创建嵌入式的Servlet容器。
war包:启动服务器,服务器启动SpringBoot应用(编写SpringBootServletInitializer
的子类,并调用configure
方法),启动ioc容器。
🔫SpringBoot的数据访问
Spring Boot默认采用整合Spring Data的方式进行SQL和NOSQL统一处理,添加了大量的自动配置,屏蔽了很多设置。
🔰整合Mybatis
◾添加mybatis启动器依赖
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.2</version>
</dependency>
◾在application.yml文件内配置数据源属性
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: xjh1999
url: jdbc:mysql://localhost:3306/share_platform?useUnicode=true&characterEncoding=UTF-8&userSSL=false&serverTimezone=GMT%2B8
type: com.alibaba.druid.pool.DruidDataSource
schema:
- classpath:.sql文件路径
initialization-mode: always
◾数据库建表(schema属性可以自动建表)并且创建对应的JavaBean
◾编写mybatis全局配置文件以及mapper映射文件(mapper文件夹下)
◾在application.yml文件内配置mybatis配置文件路径
mybatis:
config-location: classpath:mybatis/mybatis-config.xml
mapper-locations: classpath:mybatis/mapper/*.xml
◾编写mapper类
要使用@Mapper
或者@MapperScan
将接口扫描到容器中
@Mapper
public interface UserMapper {
public UserInfo getUserById(Integer Id);
}
🕹整合SpringData JPA
◾编写实体类和数据表进行映射,并配置映射关系(使用注解)
@Entity
标注用于实体类声明语句之前,指出该Java 类为实体类,将映射到指定的数据库表。
@Table(name = "表名")
指定该类对应到数据库的表名
@Id
用于声明一个实体类的属性映射为数据表的主键列
@GeneratedValue
用于标注主键的生成策略,例如 IDENTITY:ID自增长的方式
@Column
当实体的属性与其映射的数据库表的列不同名时使用该注解指定属性的列名
◾编写一个Dao接口来操作实体类对应的数据表(实现Repository接口)
CrudRepository
:是Repository的子接口,提供CRUD的功能。
PagingAndSortingRepository
:是CrudRepository的子接口,添加分页和排序的功能。
JpaRepository
:是PagingAndSortingRepository的子接口,增加了一些实用的功能,比如:批量操作等。
JpaSpecificationExecutor
:用来做负责查询的接口。
Specification
:是Spring Data JPA提供的一个查询规范,要做复杂的查询,只需围绕这个规范来设置查询条件即可。
🔫SpringBoot与缓存
🛸spring缓存抽象注解:
@Cacheable/@CachePut/@CacheEvict 主要的参数
其他注解
@Caching:设置方法的复杂缓存规则(内部同时配置多种缓存属性)
@CacheConfig:类的全局缓存注解配置
🛸缓存使用步骤
◾引入spring-boot-starter-cache模块
◾在启动类上使用@EnableCaching开启缓存
◾使用缓存注解
◾切换为其他缓存(默认是使用ConcurrentHashMap,常使用其他的缓存中间件代替)
🛸整合Redis
◾在linux服务器使用docker启动redis
◾引入spring-boot-starter-data-redis (容器内创建RedisCacheManager)
◾在application.yml内配置redis的连接地址
◾可以使用RedisTemplate操作redis
操作字符串:
redisTemplate.opsForValue();
操作hash:redisTemplate.opsForHash();
操作list:redisTemplate.opsForList();
操作set:redisTemplate.opsForSet();
操作有序set:redisTemplate.opsForZSet();
◾默认创建的RedisCacheManager是使用RedisTemplate操作缓存的,RedisTemplate又是默认使用JDK序列化机制的,可以在配置类内自定义该类并使用@Bean注册,实现json序列化。
🔫SpringBoot与消息
📠消息服务两个重要概念:
消息代理(message broker)和目的地(destination)
消息发送者发送消息,由消息代理接管消息,消息代理保证消息传递到指定的目的地。
📠消息队列目的地的两种主要形式:
队列(queue):点对点消息通信(point-to-point),消息一旦被消费就会被删除
主题(topic):发布(publish)/订阅(subscribe)消息通信
📠消息队列协议对比:
JMS | AMQP | |
---|---|---|
定义 | Java api | Wire-protocol |
跨语言 | 否 | 是 |
跨平台 | 否 | 是 |
Model | 两种消息模型:Peer-2-Peer ,Pub/sub | 五种消息模型:direct exchange,fanout exchange,topic change,headers exchange,system exchange (后四种和JMS的pub/sub模型没有太大差别,仅是在路由机制上做了更详细的划分) |
支持消息类型 | 多种消息类型:TextMessage,MapMessage,BytesMessage,StreamMessage,ObjectMessage | byte[] 当实际应用时,有复杂的消息,可以将消息序列化后发送。 |
综合 | JMS 定义了JAVA API层面的标准,在java体系中,多个client均可以通过JMS进行交互,不需要应用修改代码,但是其对跨平台的支持较差。 | AMQP定义了wire-level层的协议标准;天然具有跨平台、跨语言特性。 |
📠Spring的消息
◾spring-jms提供了对JMS的支持
◾spring-rabbit提供了对AMQP的支持
◾需要ConnectionFactory连接工厂的实现来连接消息代理
◾使用JmsTemplate、RabbitTemplate来发送消息
◾使用@JmsListener(JMS)、@RabbitListener(AMQP)注解在方法上监听消息代理发布的消息
◾使用@EnableJms、@EnableRabbit开启支持两种消息队列
🔫SpringBoot与检索
Elasticsearch 面向文档,意味着它存储整个对象或文档(JSON形式)。并且对文档进行索引、检索、排序和过滤而不是对行列数据,这也是 Elasticsearch 能支持复杂全文检索的原因。
◾SpringBoot默认支持两种技术与ES交互
1.Jest(默认不生效,需要导入jest工具包)
2.SpringData ElasticSearch 官方文档
🔫SpringBoot与任务
◾异步任务的两个注解:
@EnableAysnc
在启动类上添加开启异步注解
@Aysnc
标记异步的方法或类 (当其它线程调用方法会开启一个新的线程去异步执行)
◾定时任务的两个注解:
@EnableScheduling
在启动类上添加开启定时任务注解
@Scheduled()
标记定时任务的方法或类,属性是cron表达式
◾邮件任务
引入spring-boot-starter-mail
在application.yml内配置发送邮件账户
使用JavaMailSender发送邮件
🔫SpringBoot与安全
Spring Security是Spring自带的安全框架
官方文档
◾引入spring-boot-starter-security
◾编写Spring Security的配置类WebSecurityConfigurerAdapter
◾在配置类上使用@EnableWebSecurity
注解开启WebSecurity模式
🔫Spring Boot热部署
◾引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
◾使用Ctrl+F9重新编译并生效
🔫Spring Boot监控管理
◾引入依赖 spring-boot-starter-actuator
◾使用http请求方式访问监控端点
端点名 | 描述 |
---|---|
autoconfig | 项目自动配置类信息 |
auditevents | 审计事件 |
beans | 所有Bean的信息 |
configprops | 所有配置属性 |
dump | 线程状态信息 |
env | 环境信息 |
health | 应用健康状况 |
info | 当前应用信息 |
metrics | 应用的各项指标 |
mappings | @RequestMapping映射路径 |
shutdown | 远程关闭当前应用(默认关闭) |
trace | 追踪信息(http请求) |