zoukankan      html  css  js  c++  java
  • 深入浅出springboot的核心原理(下)

    什么是 Starter
    Starter是Spring Boot中的一个非常重要的概念,Starter 相当于模块,它能将模块所需的依赖整合起来并对模块内 的Bean根据环境( 条件)进行自动配置。使用者只需要 依赖相应功能的Starter,无需做过多的配置和依赖,Spring Boot就能自动扫描并加载相应的模块。 在上一节课中,我们在Maven的依赖中加入spring-boot-starter-web 就能使项目支持 Spring MVC,并且 Spring Boot还为我们做了很多默认配置,无需再依赖spring-web、 spring-webmvc等相关包及做相关配置就能够立即使用起 来
     SpringBoot 存在很多开箱即用的 Starter 依赖,使得我们 在开发业务代码时能够非常方便的、不需要过多关注框架 的配置,而只需要关注业务即可;

    spring-boot-starter-logging

    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>1.5.8.RELEASE</version>
    <exclusions>
    <exclusion><!--排除spring-boot-starter-logging日志依赖-->
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-logging</artifactId>
    </exclusion>

    </exclusions>
    </dependency>

    SpringBoot 另一大神器-Actuator
    微服务应用开发完成以后,最终目的是为了发布到生产环 境上给用户试用,开发结束并不意味着研发的生命周期结 束,更多的时候他
    只是一个开始,因为服务在本地测试完 成以后,并不一定能够非常完善的考虑到各种场景。所以 需要通过运维来保障服务的稳定。
    在以前的传统应用中,我们可以靠人工来监控。但是微服
    务中,几千上万个服务,我们需要了解每个服务的健康状 态,
    就必须要依靠监控平台来实现。所以在 SpringBoot 框架中提供了 spring-boot-starter-actuator 自动配置模块来支持对于
    SpringBoot 应用的监控;

    Actuator
    Spring Boot Actuator 的关键特性是在应用程序里提供众 多 Web 端点,通过它们了解应用程序运行时的内部状况。
    有了Actuator,你可以知道Bean在Spring应用程序上下 文里是如何组装在一起的,掌握应用程序可以获取的环境属性信息
    在spring-boot项目中,添加actuator的一个starter。

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

    Actuator 提供的 endpoint
    启动服务之后,可以通过下面这个地址看到actuator提供 的所有Endpoint地址
    http://localhost:8080/actuator 可以看到非常多的Endpoint。 有一些Endpoint是不能访 问的,涉及到安全问题。
    如 果 想 开 启 访 问 那 些 安 全 相 关 的 url ,可以在 application.xml中配置, 开启所有的endpoint
    management.endpoints.web.exposure.include=*

    health
    针对当前SpringBoot应用的健康检查,默认情况下,会通 过“up”或者“down”; 可以基于下面这个配置,来打印heath 更详细的信息
    management.endpoint.health.show-details= always
     Loggers
    显示当前 spring-boot 应用中的日志配置信息,针对每个 package对应的日志级别 beans 获取当前spring-boot应用中IoC容器中所有的bean
    Dump 获取活动线程的快照
    Mappings 返回全部的uri路径,以及和控制器的映射关系
    conditions 显示当前所有的条件注解,提供一份自动配置生效的条件
    情况,记录哪些自动配置条件通过了,哪些没通过
    shutdown 关闭应用程序,需要添加这个配置:
    management.endpoint.shutdown.enabled=true
    这个Endpoint是比较危险的,如果没有一定的安全保 障,不要开启 Env 获取全部的环境信息

    关于 health 的原理
    应用健康状态的检查应该是监控系统中最基本的需求,所 以我们基于health来分析一下它是如何实现的。 SpringBoot 预先通过
    org.springframework.boot.actuate.autoconfigure.health. HealthIndicatorAutoConfiguration 这个就是基于spring-boot的自动装配来载入的。
    所以,我们可以在 actuator-autoconfigure 这个包下找到 spring.factories。
     
    Actuator 中提供了非常多的扩展点,默认情况下提供了一 些常见的服务的监控检查的支持。
    DataSourceHealthIndicator
    DiskSpaceHealthIndicator
    RedisHealthIndicator …
    其中,有一些服务的检查,需要依赖于当前应用是否集成 了对应的组件,比如 redis,如果没有集成,
    那么 RedisHealthIndicatorAutoConfiguration 就不会被装载。 因为它有condition的条件判断

    Actuator 对于 JMX 支持
    除了REST方式发布的Endpoint,Actuator还把它的端点 以JMX MBean的方式发布出来,可以通过JMX来查看和 管理。
    操作步骤
    在cmd中输入jconsole,连接到spring-boot的应用 
    就可以看到 JBean 的信息以及相应的操作。比如可以在操 作菜单中访问shutdown的endpoint来关闭服务


    什么是 JMX
    JMX全称是Java Management Extensions。 Java 管理扩 展。 它提供了对Java应用程序和JVM的监控和管理功能。 通过JMX,我们可以监控
    1. 服务器中的各种资源的使用情况,CPU、内存
    2. JVM内存的使用情况
    3. JVM线程使用情况 比如前面讲的 Actuator 中,就是基于 JMX 的技术来实现
    对endpoint的访问
  • 相关阅读:
    java 多线程 Callable -- 分段处理一个大的list 然后再合并结果
    java实现 比较两个文本相似度-- java 中文版 simHash 实现 ,
    spring 多线程 写入数据库 和 写入 xml文件
    爬虫入门 手写一个Java爬虫
    java web 入门级 开发 常用页面调试方法
    Java 递归调用 recursive 给一个参数 返回一大堆
    javaWeb 基础知识
    用 eclipse 创建一个简单的 meaven spring springMvc mybatis 项目
    【题解】【LibreOJ Beta Round #5】游戏 LOJ 531 基环树 博弈论
    【题解】Popping Balls AtCoder Code Festival 2017 qual B E 组合计数
  • 原文地址:https://www.cnblogs.com/zpp1234/p/13203668.html
Copyright © 2011-2022 走看看