Spring Boot 九 - “How-to” 指南
本节提供了一些常见的“如何做…”类型的问题的答案,这些问题在使用Spring Boot时经常出现。 这绝对不是详尽的列表,但它确实涵盖了很多。
如果你有一个我们没在这里介绍的特定问题,你可能需要访问 stackoverflow.com 来查看是否有其他人已经提供了答案; 这也是提出新问题的好地方(请使用spring-boot标签)。
我们也很乐意扩展这一节;如果你想添加一个“操作指南”,你可以向我们发送一个pull request。
Spring Boot 应用创建自己的FailureAnalyzerFailureAnalyzer``是在启动时拦截异常的好方法,并将其转换为可读的消息,将其封装到FailureAnalysis中。Spring Boot为应用程序上下文相关的异常、jsr-303验证等提供了这样的分析器。实际上,也很容易创建自己的分析器。
AbstractFailureAnalyzer是FailureAnalyzer的一个方便的扩展,它检查异常中指定的异常类型的存在。你可以从它扩展,以便你的实现只有在实际存在时才有机会处理异常。如果出于某种原因,你无法处理异常,则返回nul ...
Spring Boot 八- 构建工具插件
Spring Boot提供Maven和Gradle的构建工具插件。插件提供了各种功能,包括可执行jar的打包。 本节提供有关这两个插件的更多详细信息,以及如果需要扩展不受支持的构建系统的一些帮助。 如果你刚刚开始,你可能需要先阅读第三部分“使用Spring Boot”一节中的“第13章,构建系统”。
Spring Boot Maven pluginSpring Boot Maven插件在Maven中提供Spring Boot支持,允许你打包可执行的jar或war包并可以直接运行应用程序。要使用它,你必须使用Maven 3.2(或更高版本)。
有关完整的插件文档,请参阅Spring Boot Maven插件网站。
引入插件要使用Spring Boot Maven Plugin,只需在pom.xml的plugins部分包含相应的XML
12345678910111213141516171819202122<?xml version="1.0" encoding="UTF-8"?><project xmlns="http ...
编绎Spring Boot源码
在spring-boot 根目录执行./mvnw clean install -DskipTests
cd 到spring-boot-projects目录,执行../mvnw clean install -pl spring-boot-tools/spring-boot-maven-plugin -Pdefault,full -DskipTests
../mvnw clean prepare-package -pl spring-boot-docs -Pdefault,full -DskipTests 生成文档,在spring-boot-docs/target/contents/reference目录
-DskipTests 跳过单元测试,不然各种莫名其妙的错误。
不用mvnw包装器也是可以的,用自己安装的mvn来执行
Spring Boot 七 - Spring Boot CLI
Spring Boot CLI是一个命令行工具,可以使用Spring来快速开发。它允许你运行Groovy脚本,这意味着你具有熟悉的类似Java的语法,没有太多的样板代码。您还可以引导新项目或为其编写自己的命令。
安装CLI可以手动安装Spring Boot CLI; 如果你是OSX用户可以使用SDKMAN!(SDK Manager)或使用Homebrew或MacPorts。有关全面的安装说明,请参见“入门”部分中的第10.2节“安装弹簧启动CLI”。
使用CLI一旦你安装了CLI,你可以通过输入spring来运行它。 如果没有使用任何参数运行spring,将显示一个简单的帮助屏幕:
12345678910$ springusage: spring [--help] [--version] <command> [<args>]Available commands are: run [options] <files> [--] [args] Run a spring groovy script ... more command he ...
Spring Boot 六 - 部署Spring Boot应用
在部署应用时,Spring Boot 灵活的打包选项提供了大量的选择。你可以轻松地将Spring Boot 应用部署到各种云平台、容器镜像(例如Docker)或虚拟/真实机器上。
本节将介绍一些更常见的部署场景。
部署到云上Spring Boot的可执行jar对于大多数流行的云PaaS(平台即服务)提供者都是直接可用的。这些提供者往往要求你“自带容器”;它们管理应用程序进程程(不是专门针对Java应用程序的),因此它们需要一些中间层,以使应用程序适应云的运行过程的概念。
两家受欢迎的云服务提供商,Heroku和Cloud Foundry,采用了一种“buildpack”的方式。buildpack将你部署的代码封装在启动应用程序所需的任何东西中:它可能是一个JDK和对java的调用,它可能是一个嵌入式web服务器,或者它可能是一个成熟的应用程序服务器。buildpack是可插拔的,但理想情况下,你应该能够尽可能少地定制它。这减少了不受你控制的功能的占用。它最小化了开发和生产环境之间的差异。
理想情况下,你的应用程序,就像一个Spring Boot 的可执行jar一样,拥有它需要在其中运行 ...
Spring Boot 五-Spring Boot执行器 - 生产就绪特性
Spring Boot包括一些额外的功能,可帮助你在应用程序推送到生产时监视和管理它。你可以选择使用HTTP端点或JMX来管理和监视应用程序。审计,健康和指标收集可以自动应用于你的应用程序。
HTTP执行器端点仅适用于基于Spring MVC的应用程序。特别是,也不适用于Jersey除非你启用Spring MVC。
启用生产就绪功能spring-boot-actuator模块提供了所有Spring Boot的生产就绪特性。启用这些特性的最简单的方法是添加spring-boot-starter-actuator “Starter”。
Actuator 的定义
Actuator 是制造术语,指的是用于移动或控制某物的机械装置。 Actuator 可以从小的变化产生大量的运动。
要将 actuator 添加到基于Maven的项目中,添加以下“Starter”依赖项:
123456<dependencies> <dependency> <groupId>org.springframework.boot</group ...
Spring Boot 四-Spring Boot 特性
本节将深入介绍Spring Boot的细节。在这里,你可以了解你想要使用和定制的关键特性。如果还没有,你可能需要阅读第2部分,“开始”和第3部分,“使用Spring引导”部分,这样你就可以很好地了解基础知识。
SpringApplicationSpringApplication类提供了一种方便的方法来引导一个从main()方法启动的Spring应用程序。在许多情况下,你可以将其委托给静态SpringApplication.run方法:
123public static void main(String[] args) { SpringApplication.run(MySpringConfiguration.class, args);}
当你的应用程序启动时,你应该会看到类似的东西:
123456789101112 . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \( ( )\___ | '_ | '_| | ...
dubbo学习7-只订阅服务不注册
在实际开发过程中,经常会共用一个注册中心,这时如果我们的服务还没有开发好,可能就会影响消费者不能正常运行。这个时候可以让这个开发者只订阅注册中心(因为有可能会需要调用其他的服务),但是不注册上去,消费者直接连接到这个开发中的提供者。禁用注册配置:
1<dubbo:registry address="zookeeper://localhost:2181" register="false" />
或:
1<dubbo:registry address="zookeeper://localhost:2181?register=false" />
关系图:
dubbo学习6-直连提供者
在开发及测试环境下,经常需要绕过注册中心,只测试指定服务提供者,这时候可能需要点对点直连。在点对点直连方式下,将以服务接口为单位,忽略注册中心的提供者列表,A接口配置点对点,不影响B接口从注册中心获取列表。
三种实现方式Reference Config如果是线上需求需要点对点,可以在xml和dubbo.properties文件中通过url属性指定提供者,这将绕过注册中心,如有多个地址用分号隔开。
1<dubbo:reference interface="life.qzz.dubbodemo.api.DemoService" id="demoService" url="dubbo://localhost:20880" />
启动参数在JVM启动参数中加入-D参数映射服务地址,如:
1java -Dlife.qzz.dubbodemo.api.DemoService=dubbo://localhost:20880
key为服务名,value为服务提供者url,此配置优先级最高。为了避免复杂化线上环境,不要在线上使用这个 ...
dubbo学习5-restfull接口
使用jax-rs和dubbo来搭建restfull接口需要用到的框架:
jax-rs
dubbo
resteasy-client
org.mortbay.jetty(因为dubbo支持的jetty版本比较老)
完整的pom文件:12345678910111213141516171819202122232425262728293031323334353637383940414243<dependencies> <dependency> <groupId>org.jboss.resteasy</groupId> <artifactId>jaxrs-api</artifactId> <version>3.0.12.Final</version> </dependency> <dependency> <groupId>org.jboss.resteasy</groupId> ...