SpringCloud微服务实战——第二章Springboot
Spring Boot项目工程

src/main/java:主程序入口HelloApplication,可以通过直接运行该类来启动Spring Boot应用。
src/main/resources:配置目录,该目录用来存放应用的一些配置,比如应用名,服务端口,数据库链接等。
由于引入了web模块,由此产生static目录与template目录,static用来存放静态资源,如:图片、css、js。template用来存放Web页面的模板文件。
由于演示为RESTful API,所以这两个目录暂时不会用到。
src/test/:单元测试目录,自动生成的Test可以直接运行Spring Boot应用的测试。可以通过它测试RESTful API。
注:在pom中,Spring Boot的项目默认打成jar包,因为默认的Web模块依赖会包含嵌入式的Tomcat,这样应用jar自身就提供了Web服务的能力。
实现RESTful API

启动该应用后就可以看到预期返回。
启动Spring Boot项目
1)直接运行main函数启动。
2)通过maven插件执行mvn spring-boot:run命令。
3)在服务器上部署时,先将应用打成jar包,在通过java -jar xxx.jar来启动
编写单元测试

@RunWith注解 使测试能够在Spring环境中运行。
@SpringBootTest,默认指向启动类。
MockMVC对象:用于模拟向Controller接口发起请求,perform函数执行请求,accept函数用于执行接受的数据类型,andExcept用于判断接口返回的期望值。
配置详解
配置文件:Spring Boot配置文件的默认地址:src/main/resources/application.properties。
可以在配置文件中定义:容器端口号、数据库连接信息、日志级别。
端口号:server.port=8080
应用名:spring.application.name=hello 注:该名称会被SpringCloud注册为服务名。
我们还可以在配置文件中使用自定义参数:
book.name=zhaiyongchao
book.price=10
然后在应用中使用@Value将值注入自定义参数

参数引用
在application.properties中也可以使用${book.name},实现对参数的引用。
随机数
使用${random}可以实现随机数

命令行参数
可以使用命令行启动应用时,修改属性:
java -jar xxx.jar --server.port=8888
在使用命令行启动Spring Boot应用时,连续两个减号--是对application.properties的属性进行赋值。
多环境配置
application-{profiles}.properties格式来对应不同的环境标识:
application-dev.properties:开发环境
application-test.properties:测试环境
application-prod.properties:生产环境。
需要在application.properties中使用spring.profiles.action属性来设置。
多环境配置使用思路:
1)在application.properties中配置通用内容,并设置spring.profiles.active=dev,以为默认开发环境
2)在application-{profile}.properties中配置各个环境不同的内容。
3)通过命令行方式去激活不同环境的配置。
加载顺序
1)在命令行中传入的参数
2)SPRING_APPLICATION_JSON中的属性。SRPING_APPLICATION_JSON是以JSON格式配置在系统环境变量中的内容。
3)java:comp/env中的JNDI属性
4)java的系统属性,可以通过System.getProperties()获得内容。
5)操作系统的环境变量
6)通过random.*配置的随机属性
7)位于当前应用jar包之外,针对不同{profile}环境的配置文件内容。
8)位于当前应用jar包之内,针对不同{profile}环境的配置文件内容。
9)位于当前应用jar包之外的application.properties。
10)位于当前应用jar包之内的application.properties。
11)在@configuration注解修改的类中,通过@PropertySource注解定义的属性。
12)应用默认属性,使用SpringApplication.setDefualtProperties定义的内容。
优先级是由高到低,数字越小优先级越高。
其中第7、9都是从jar之外读取配置文件,因此指定外部配置文件的加载位置来取代jar包之内的配置内容。
SpringCloud微服务实战——第二章Springboot的更多相关文章
- SpringCloud微服务实战——第一章序言读书笔记
什么是微服务架构 是系统架构上的一种设计风格,将独立的系统拆分成多个小型服务,这些小型服务都在各自独立的进程中运行,服务之间基于HTTP的RESTful API进行通信协作. 每个小型服务都围绕各自的 ...
- springcloud微服务实战--笔记
目前对Springcloud对了解仅限于:“用[注册服务.配置服务]来统一管理其他微服务” 这个水平.有待提高 Springcloud微服务实战这本书是翟永超2017年5月写的,时间已经过去了两年,略 ...
- SpringCloud学习(SPRINGCLOUD微服务实战)一
SpringCloud学习(SPRINGCLOUD微服务实战) springboot入门 1.配置文件 1.1可以自定义参数并在程序中使用 注解@component @value 例如 若配置文件为a ...
- SpringCloud微服务实战——第三章服务治理
Spring Cloud Eureka 服务治理 是微服务架构中最核心最基本的模块.用于实现各个微服务实例的自动化注册与发现. 服务注册: 在服务治理框架中,都会构建一个注册中心,每个服务单元向注册中 ...
- 【SpringCloud微服务实战学习系列】服务治理Spring Cloud Eureka
Spring Cloud Eureka是Spring Cloud Netflix微服务中的一部分,它基于NetFlix Sureka做了二次封装,主要负责完成微服务架构中的服务治理功能. 一.服务治理 ...
- SpringCloud微服务实战——搭建企业级开发框架(三十四):SpringCloud + Docker + k8s实现微服务集群打包部署-Maven打包配置
SpringCloud微服务包含多个SpringBoot可运行的应用程序,在单应用程序下,版本发布时的打包部署还相对简单,当有多个应用程序的微服务发布部署时,原先的单应用程序部署方式就会显得复杂且 ...
- SpringCloud微服务实战——搭建企业级开发框架(四):集成SpringCloud+SpringBoot
1.在GitEgg工程的根目录,最上级父pom.xml文件中引入需要依赖的库及Maven插件,设置编码方式: <!--?xml version="1.0" encoding= ...
- [高清·非影印]Spring实战+SpringBoot实战+Spring微服务实战+SpringCloud微服务实战(全4本)
------ 郑重声明 --------- 资源来自网络,纯粹共享交流, 如果喜欢,请您务必支持正版!! --------------------------------------------- 下 ...
- Spring-cloud微服务实战【三】:eureka注册中心(中)
回忆一下,在上一篇文章中,我们创建了两个springboot项目,并且在consumer项目中通过restTemplate进行HTTP通信,成功访问到了producer提供的接口,思考一下这样的实 ...
随机推荐
- 跨平台移动开发_PhoneGap API 事件类型
PhoneGap API Events backbuttondevicereadymenubuttonpauseresumeonlineofflinebatterycriticalbatterylow ...
- 函数进阶之结合tornado
一.本篇博文内容 .协程函数 .面向过程编程 .递归和二分法 二.协程函数 协程函数:就是使用了yield表达式形式的生成器 首先函数的传参有几种? 三种: 1.实参形参传参 2.闭包的形式传参 3. ...
- 1.python基本数据类型
1.数值类型(4种) 数值类型都是不可变的 1)整型(int) example: a = 0 b = -1 诸如此类,都为整型 2)浮点型(float) example: f = 1.1 f = -1 ...
- java.lang.ClassFormatError Duplicate field name&signature in class file XXXXXX【转】
本文转载自:https://blog.csdn.net/ylchou/article/details/7739742 2012-7-5 15:06:25org.apache.catalina.core ...
- 时间插件之My97DatePickerBeta
My97DatePickerBeta使用很简单 1.在jsp页面中 引入JS 下载地址:链接: https://pan.baidu.com/s/1bp5uzuv 密码: ya9a <script ...
- iostream与iostream.h的区别
简单来说: .h的是标准C的头文件,没有.h的是标准C++的头文件,两种都是头文件. 造成这两种形式不同的原因,是C++的发展历史决定的,刚才正好有别的人也问这个问题,这里我再回答一下(注意vs200 ...
- inline-block和同级的text-align问题
https://www.cnblogs.com/qjqcs/p/5551640.html margin:0 auto:是设置块标签在父级中居中对齐,是一种对齐方式.所以对于display:inline ...
- DESeq2 install --- 如何安装R包("RcppArmadillo")?
安装R包("RcppArmadillo")失败,导致依赖该包的DESeq2 无法使用: 首先对gcc,g++升级至4.7, 但依然报错,还是安装不了RcppArmadillo: 报 ...
- PHP(Zend Studio)入门视频
视频地址: http://www.ev-get.com/article/2014/5/9/20962.html (去掉地址中的减号-:可以看视频) Zend Studio教学视频之Zend Studi ...
- pylab.show()没有显示图形图像(python的matplotlib画图包)
no display name and no $DISPLAY environment variable ============================ @Neil's answer is ...