zoukankan      html  css  js  c++  java
  • 轻量级微服务架构【读书笔记2】

    1. Spring Boot 是什么(What)

      Spring Boot 是为生产级 Spring 应用而生的,它使得开发 Spring 应用程序更加高效、简洁。

     1.1 由来

      Spring 1.0 时代,习惯用XML来配置Bean,可以轻松的进行依赖注入,不过当Bean的数量越来越多时,XML配置就会越来越复杂。

      Spring 2.0 时代,在XML的命名空间上做了优化,让配置看起来尽可能简单,但仍然没有解决配置上的问题。

      Spring 3.0 时代,可以使用 Java 注解来取代曾经的 XML 配置。

      Spring 4.0 时代,可以连 XML 配置文件都不在需要了,完全使用 Java 源码级别的配置与 Spring 提供的注解快速的开发出 Spring 应用。

      但是,传统的 Java Web 的运行模式,我们将 war 包 部署到 Web Server 上,才能对外提供服务,能否运行一个简单的 main()方法就能启动一个Web Server ? Spring Boot 满足了我们的需求。

     1.2 特性(features)

      1)可创建独立的 Spring 应用程序:所有应用程序都是一个个独立的jar包,直接运行带有@SpringBootApplication,SpringBoot在内部嵌入一个Web Server而已。但依旧可以传统war包方式来部署到 Web Server中。

      2)提供嵌入式 Web Server(无须部署 war 包):默认启动 Tomcat,可以在application.properties文件中配置具体的端口号。当然,可以通过在 Maven 配置文件中天健相关的 Web Server插件。

      3)无任何代码生成技术也无任何 XML 配置 :除了一个 application.properties 配置文件,Spring Boot 再无其他配置文件,而且所有插件的相关配置也在这个唯一的配置文件中。

      4)自动化配置:其实Spring Boot中不一定要有 application.properties 文件,很懂配置项目有其默认值,我们只需要启动相关注解。Spring Boot 提供了一系列 @ConditionOnXxx 条件注解来实现,底层使用 Spring 4.0 的 Condition 接口。

      5)提供一系列生成级特性:例如核心指标、健康指标、外部配置。需要在maven中配置 spring-boot-starter-actuator 。

      6)提供开箱即用的 Spring 插件:只需要添加一段Maven 依赖配置即可开启使用。

     1.3 相关插件

    • SQLAPI —— JDBC、JPA等
    • 关系数据库 —— MySQL、PostgreSQL等
    • 内存数据库 —— H2、HSQLDB、Derby等
    • NoSQL 数据库 —— Redis、MongoDB等
    • 消息队列 —— RabbitMQ、Artemis等
    • 分布式事务 —— Atomikos、Bitronix等
    • 模板引擎 —— Velocity、Freemarker、Mustache等

     1.4 应用场景

    • 传统的 Web MVC 架构
    • 前后端分离架构
    • 微服务架构

    2. 如何使用 Spring Boot 框架【参考官网

     2.1 搭建 Spring Boot开发框架(工作中使用IDEA创建Maven项目)

     2.2 开发一个简单的 Spring Boot 应用程序

     2.3 运行 Spring Boot 应用程序:在 IDEA 中直接运行、使用 Maven 运行、使用 Java 命令运行

    3. Spring Boot 生产级特性

     Actuator 插件提供了大量生产级特性,可以通过 Maven 配置使用该插件:

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

     3.1 端点

    • autoconfig : 获取自动配置信息
    • beans :获取 Spring Bean 基本信息
    • configprops :获取配置项信息
    • dump :获取当前线程基本信息
    • env : 获取环境变量信息
    • health :获取健康检查信息
    • info :获取应用基本信息
    • metrics :获取性能指标信息
    • mappings : 获取请求映射信息
    • trace :获取请求调用信息

     3.2 跨域

      曾经使用JSONP来实现跨域问题,但它有明显的限制,只支持GET请求,如果我们需要JSONP发送POST请求就不太可能。需要通过其他手段,如iframe,限制我么选择CORS来实现跨域问题。【请查看

     3.3 远程监控

  • 相关阅读:
    [poj2778]DNA Sequence(AC自动机+矩阵快速幂)
    密码学学习笔记
    [hdu3695]Computer Virus on Planet Pandora(AC自动机)
    [hdu1277]全文检索(AC自动机)
    [hdu3065]病毒侵袭持续中(AC自动机)
    [hdu2896]病毒侵袭(AC自动机)
    lintcode-84-落单的数 III
    lintcode-83-落单的数 II
    lintcode-79-最长公共子串
    lintcode-78-最长公共前缀
  • 原文地址:https://www.cnblogs.com/zacky31/p/8931452.html
Copyright © 2011-2022 走看看