为什么选用SpringBoot作为微服务框架?
理由:
1.自动化配置
2.快速开发
3。轻松部署
优点:
1.大量自动化配置
2.每次整合功能时,不需要在Maven的pom。xml中维护依赖关系。而是通过模块化的Starter模块定义来引用。
3.springcloud可以很好地融入docker,本身支持嵌入式Tomcat、Jetty,所以通过Springboot构建的项目不需要安装Tomcat,只需要将Springboot打包为jar包,通过java -jar运行
SpringBoot的宗旨并非要重写Spring或是替代Spring, 而是希望通过设计大量的自动化配置等方式来简化Spring原有样板化的配置,
使得开发者可以快速构建应用。
boot项目构建:
结构:
src/main/java: 主程序入口
src/main/resources: 配置目录,
比如:应用名、服务端口、数据库链接等。
static:静态资源, 如图片、 css、JavaScript等
templates:Web页面的模板文件
• src/test: 单元测试目录, 生成的HelloApplicationTests通过JUnit 4实
现, 可以直接用运行Spring Boot应用的测试
pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.guo.cloudhello</groupId>
<artifactId>cloudhello</artifactId>
<version>1.0-SNAPSHOT</version>
父项目parent配置指定为 spring-boot-starter-parent的1. 3.版本, 7 该父项
目中定义了Spring Boot版本的基础依赖以及 一 些默认配置内容 , 比如,配置文件
application.proper的位置等
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.7.RELEASE</version>
<relativePath/>
</parent>
<dependencies>
spring-boot-starter-web: 全栈Web开发模块, 包含嵌入式Tomcat、 Spring
MVC。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
spring-boot-starter士est: 通用测试模块, 包含JUnit、 Hamcrest、 Mockito 。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Brixton.SR5</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
这里所引用的web和test 模块,在SpringBoot 生态中被称为Starter POMs。Starter POMs。是一系列轻便的依赖 包, 是一套一站式的Spring相关技术的解决方案。
Spring Boot的StarterPOMs采用spring-boo七-starter-*的命名方式,*代表一个特别的应用功能模块
配置文件:
Spring Boot 的默 认 配 置 文 件位置为 src/main/resources/application.
properties 。
server.port=8888 来 指 定 服 务 端口为 8888 , 也可 以通过
spring.applicaton.name =hello来指定应用名
配置文件格式:
-
.properties文件
-
.yml文件
environments:
dev:
url: http://dev.bar.com
等价于:
environments.dev.url=http://dev.bar.com
自定义参数:
book.name=SpringCloudinAction
book.author=ZhaiYongchao
@Component
public class Book {
@Value("${book.name}")//通过@Value 注解来加载这些自定义的参数
private String name;
@Value("${book.author}")
private String author;
}
自定义参数引用:
在 application.proper巨es 中的各个参数之间可以直接通过使用 PlaceHolder 的
方式来进行引用 , 就像下面的设置:
book.name=SpringCloud
book.author=ZhaiYongchao
book.desc=${book.author} is writing《${book.name}》
命令行参数:
一般通过java -jar方式启动springboot应用。但是要在命令行中指定应用运行参数:
java -jar xxx.jar --server.parrt= 8888
1.直接用命令行的方式设置Server。port属性,并将启动的端口设置为8088
2.连续的两个减号--就 是对applicaton.properties 中 的 属 性 值 进 行赋值 的标识。 所以 , java -jarxxx.jar--server.porrt=8888命令, 等价于application.properties 中添加属性server.port= 8888
多环境配置:
springboot多环境配置的配置文件名格式需要满足application-{profile}.properties的格式{profile对应环境标识}
通过spring.profiles.active属性来设置
java -jar xxx.jar --spring.profiles.active=test //启动测试环境
java -jar xxx.jar --spring.profiles.active=prod//启动生产环境
springboot应用属性加载顺序:
为了能够合理重写各个属性的值,springboot使用了下面的属性加载顺序
1 在命令行中传入的参数。
2. SPRING APPLICATION JSON中的属性。 SPRING_APPLICATION—JSON是以
JSON格式配置在系统环境变量中的内容。
3. java:comp/env中的JNDI 属性。
4. Java的系统属性, 可以通过System.getProperties()获得的内容。
5 操作系统的环境变量 。
6 通过random.*配置的随机属性
7 位于当前应用 jar 包之外, 针对不同{profile}环境的配置文件内容, 例如
app巨ca巨on-{profile}.proper巨es或是YAML定义的配置文件。
8 位于当前应用 jar 包之内 , 针对不同{profile}环境的配置文件内容,例如
app巨ca巨on-{profile}.proper巨es或是YAML定义的配置文件。
9 位于当前应用jar包之外的application.proper巨es和YAML配置内容。
10位于当前应用jar包之内的app口ca巨on.proper巨es和YAML配置内容。
11在@Configura巨on注解修改的类中,通过@PropertySource注解定义的属性。
12应用默认属性,使用SpringApplication.se七DefaultProper巨es 定义的
内容
监控与管理:
actuator:
作用是不间断的手机各个微服务的应用的各项指标情况,并根据这些基础指标信息制定监控和预警贵族,做到自动化运维。
引入spring-boot-starter-actuator能够自动为springboot够贱的应用提供一系列用于监控的端点。
maven依赖:
<dependency>
<groupid> org.springframework.boot</groupid>
<arti factid>spring-boot-starter-actuator</artifactid>
</dependency>
例如/health、/mappings、/beans这些都是端点依赖。
应用配置类:
/autoconfig 该端点用来获取应用的自动化配置报告, 其中包括所有自动化配置的
候选项。例如boot默认配置。
/beans 该端点用来获取应用上下文中创建的所有Bean。
/configprops 该端点用来获取应用中配置的属性信息报告。
/env: 该端点与/configprops不同它用来获取应用所有可用的环境属性报告。 包括
环境变量、NM属性、应用的配置属性、命令行中的参数。
/mappings: 该端点用来返回所有Spring MVC的控制器映射关系报告。
/info: 该端点用来返回一些应用自定义的信息
如
info.app.name=spring-boot-hello
info.app.version=vl.0.0
度量指标类:
/metrics: 该端点用来返回当前应用的各类重要度量指标,比如内存信息、线程信息、
垃圾回收信息等
/health: 该端点它用来获取应用的各类 健康指标信息。
/dump: 该端点用来暴露程序运行中的线程信息。
/trace: 该端点用来返回基本的 HTTP 跟踪信息。
操作控制类: