Java后端--Springboot相关补充

1、Springboot热部署

        如何重新加载 Spring Boot 上的更改,而无需重新启动服务器?
        这可 以使用 DEV 工具来实现。通过这种依赖关系,您可以节省任何更改,嵌入式 tomcat 将重新启动。Spring Boot 有一个开发工具(DevTools)模块,它有助于提高开发人员的生产力。Java 开发人员面临的一个主要挑战是将文件更改自动部署到服务器并自动重启服务器。开发人员可以重新加载 Spring Boot 上的更改,而无需重新启动服务器。这将消除每次手动部署更改的需要。Spring Boot 在发布它 的第一个版本时没有这个功能。这是开发人员最需要的功能。DevTools 模块完全满足开发人员的需求。该模块将在生产环境中被禁用。它还提供 H2 数据库控制台以更好地测试应用程序。
devtools:是spring boot的一个热部署工具,当修改了classpath下的文件(包括类文件、属性文件、页面等)时,会重新启动应用(由于其采用的双类加载器机制,这个启动会非常快,如果发现这个启动比较慢,可以选择使用jrebel)
双类加载器机制:boot使用了两个类加载器来实现重启(restart)机制:base类加载器(简称bc)+restart类加载器(简称rc)。
                  bc:用于加载不会改变的jar(第三方依赖的jar)
                  rc:用于加载我们正在开发的jar(整个项目里我们自己编写的类)。当应用重启后,原先的rc被丢掉、重新new一个rc来加载这些修改过的东西,而bc却不需要动一下。

 
        
(1)首先需要加入如下Maven依赖
<dependencies>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-devtools</artifactId>
	</dependency>
</dependencies>

 devtools可以实现页面热部署(即页面修改后会立即生效,这个可以直接在application.properties文件中配置spring.thymeleaf.cache=false来实现),实现类文件热部署(类文件修改后不会立即生效),实现对属性文件的热部署。即devtools会监听classpath下的文件变动,并且会立即重启应用(发生在保存时机),注意:因为其采用的虚拟机机制,重启是很快的。

 <build>
         <plugins>
             <!--
             用于将应用打成可直接运行的jar(该jar就是用于生产环境中的jar) 值得注意的是,如果没有引用spring-boot-starter-parent做parent,且采用了上述的第二种方式,这里也要做出相应的改动-->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                   <!--fork : 如果没有该项配置,devtools不会起作用,即应用不会restart -->
                    <fork>true</fork>
                </configuration>
            </plugin>
         </plugins>
      </build>

        1、默认情况下,/META-INF/maven,/META-INF/resources,/resources,/static,/templates,/public这些文件夹下的文件修改不会使应用重启,但是会重新加载(devtools内嵌了一个LiveReload server,当资源发生改变时,浏览器刷新)。

     2、如果想改变默认的设置,可以自己设置不重启的目录:spring.devtools.restart.exclude=static/**,public/**,这样的话,就只有这两个目录下的文件修改不会导致restart操作了。
     3、如果要在保留默认设置的基础上还要添加其他的排除目录:spring.devtools.restart.additional-exclude
     4、如果想要使得当非classpath下的文件发生变化时应用得以重启,使用:spring.devtools.restart.additional-paths,这样devtools就会将该目录列入了监听范围。
设置 spring.devtools.restart.enabled 属性为false,可以关闭自动重启。可以在application.properties中设置,也可以通过设置环境变量的方式。

(2)、写配置,配置写法见上

(3)、当我们修改了java类后,IDEA默认是不自动编译的,而spring-boot-devtools又是监测classpath下的文件发生变化才会重启应用,所以需要设置IDEA的自动编译

 

 英文的按这个找,是一个位置:File-Settings-Compiler-Build Project automatically

一个示例配置:

spring:
    devtools:
        restart:
            #热部署生效
          enabled: true
            #设置重启的目录
            #additional-paths: src/main/java
            #classpath目录下的WEB-INF文件夹内容修改不重启
          exclude: WEB-INF/**

另外方法热部署还有一个springloaded的jar包可以使用,感兴趣可以查阅。

2、Springboot中的actuator有关内容

        Actuator是对你的应用程序进行管理和监控的,使用也非常方便,因为它可以自动的应用到你的程序。

Actuator使用很简单,只需要在pom.xml文件中加入actuator依赖就可以了:

<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

我们在管理监控我们的应用的时候需要使用Actuator提供给我们的端点来进行访问:http://{IP}:{端口}/actuator/{端点}

监控端点endpoints介绍:

auditevents公开当前应用程序的审核事件信息。
beans显示应用程序中所有Spring bean的完整列表。
caches暴露可用的缓存。
conditions显示在配置和自动配置类上评估的条件以及它们匹配或不匹配的原因。
configprops显示所有的整理列表@ConfigurationProperties,查看配置属性,包括默认配置
env露出Spring的属性的各种环境变量,后面可跟/{name}查看具体的值
flyway显示已应用的任何Flyway数据库迁移。
health显示应用健康信息,在spring boot2.0以后需要在配置里show-details打开所有健康信息
httptrace显示HTTP跟踪信息(默认情况下,最后100个HTTP请求 - 响应交换),2.0以后需要手动打开
info显示任意应用信息,是在配置文件里自己定义的
integrationgraph显示Spring Integration图。
loggers显示和修改应用程序中记录器的配置。
liquibase显示已应用的任何Liquibase数据库迁移。
metrics显示当前应用程序的“指标”信息,比如内存用量和HTTP请求计数,后可跟/{name}查看具体值
mappings显示所有@RequestMapping路径的整理列表。
scheduledtasks显示应用程序中的计划任务。
sessions允许从Spring Session支持的会话存储中检索和删除用户会话。使用Spring Session对响应式Web应用程序的支持时不可用
shutdown允许应用程序正常关闭。
threaddump执行线程转储。
heapdump返回hprof堆转储文件。
jolokia通过HTTP公开JMX bean(当Jolokia在类路径上时,不适用于WebFlux)。
logfile返回日志文件的内容(如果已设置logging.file或logging.path属性)。支持使用HTTP Range标头检索部分日志文件的内容。
prometheus以可以由Prometheus服务器抓取的格式公开指标。

在spring boot 2.0以后,actuator默认只开启了info和health(还是不显示详情的)两个端点,要想使用其他的端点,需要在application.yml中打开

management:
  endpoints:
    web:
      exposure:
        include: "*"

        include: “*” ,这个双引号是必须要,在application.properties是不需要双引号的,application.properties中是这样的:management.endpoints.web.exposure.include=*

#调整端点的前缀路径为/
#默认的前缀是 /actuator
  management:
     endpoints:
        web:
          base-path: /

测试:http://localhost:8888/actuator/health

{
"status": "UP"
}

默认的没有详情信息,你需要去yml中配置:

management:
    endpoint:
      health:
        show-details: always

注意是endpoint下而不是endpoints下,

让shutdown端点暴露(默认还是关闭的,需要你显示单独指定启用),并且可用,可以平滑的关机,该节点在上面有提到

management:
    endpoints:
        web:
          exposure:
            include:  "*"
    endpoint:
      shutdown:
        enabled: true

总体来说打开某个端点的配置如下

management:
    endpoint:
        端点名称:
            enabled: true

另外有关自定义节点信息,请自行查阅其他资料。

3、搭配Swigger

Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。

主要有以下两个作用    1)接口的文档在线自动生成。2)功能测试。

使用方法:

1、导入Maven依赖

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.9.2</version>
        </dependency>

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.9.2</version>
        </dependency>

创建配置类:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值