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的更多相关文章

  1. SpringCloud微服务实战——第一章序言读书笔记

    什么是微服务架构 是系统架构上的一种设计风格,将独立的系统拆分成多个小型服务,这些小型服务都在各自独立的进程中运行,服务之间基于HTTP的RESTful API进行通信协作. 每个小型服务都围绕各自的 ...

  2. springcloud微服务实战--笔记

    目前对Springcloud对了解仅限于:“用[注册服务.配置服务]来统一管理其他微服务” 这个水平.有待提高 Springcloud微服务实战这本书是翟永超2017年5月写的,时间已经过去了两年,略 ...

  3. SpringCloud学习(SPRINGCLOUD微服务实战)一

    SpringCloud学习(SPRINGCLOUD微服务实战) springboot入门 1.配置文件 1.1可以自定义参数并在程序中使用 注解@component @value 例如 若配置文件为a ...

  4. SpringCloud微服务实战——第三章服务治理

    Spring Cloud Eureka 服务治理 是微服务架构中最核心最基本的模块.用于实现各个微服务实例的自动化注册与发现. 服务注册: 在服务治理框架中,都会构建一个注册中心,每个服务单元向注册中 ...

  5. 【SpringCloud微服务实战学习系列】服务治理Spring Cloud Eureka

    Spring Cloud Eureka是Spring Cloud Netflix微服务中的一部分,它基于NetFlix Sureka做了二次封装,主要负责完成微服务架构中的服务治理功能. 一.服务治理 ...

  6. SpringCloud微服务实战——搭建企业级开发框架(三十四):SpringCloud + Docker + k8s实现微服务集群打包部署-Maven打包配置

      SpringCloud微服务包含多个SpringBoot可运行的应用程序,在单应用程序下,版本发布时的打包部署还相对简单,当有多个应用程序的微服务发布部署时,原先的单应用程序部署方式就会显得复杂且 ...

  7. SpringCloud微服务实战——搭建企业级开发框架(四):集成SpringCloud+SpringBoot

    1.在GitEgg工程的根目录,最上级父pom.xml文件中引入需要依赖的库及Maven插件,设置编码方式: <!--?xml version="1.0" encoding= ...

  8. [高清·非影印]Spring实战+SpringBoot实战+Spring微服务实战+SpringCloud微服务实战(全4本)

    ------ 郑重声明 --------- 资源来自网络,纯粹共享交流, 如果喜欢,请您务必支持正版!! --------------------------------------------- 下 ...

  9. Spring-cloud微服务实战【三】:eureka注册中心(中)

      回忆一下,在上一篇文章中,我们创建了两个springboot项目,并且在consumer项目中通过restTemplate进行HTTP通信,成功访问到了producer提供的接口,思考一下这样的实 ...

随机推荐

  1. HTTP协议—常见的HTTP响应状态码解析

    常见的HTTP响应状态码解析 1XX Informational(信息性状态码) 2XX Success(成功状态码) 3XX Redirection(重定向状态码) 4XX Client Error ...

  2. HTseq-count

    HTSeq:一个用于处理高通量数据(High-throughout sequencing)的python包.HTSeq包有很多功能类,熟悉python脚本的可以自行编写数据处理脚本.另外,HTSeq也 ...

  3. Plist文件与数据解析

    综述 初步阶段当我们做个需要点数据的练习时(比如购物商品展示),我们可能是将数据直接写在代码中,比如说定义一个字符串数组或存放字典的数组.但这其实并不是一种合理的做法.因为如果当数据修改的时候,就要经 ...

  4. Kubernetes StatefulSets

    StatefulSets对于需要以下一项或多项的应用程序非常有用. 稳定,唯一的网络标识符. 稳定,持久的存储. 有序,优雅的部署和缩放. 有序,优雅的删除和终止. 有序的自动滚动更新. POD Id ...

  5. MongoDB快速入门(一)

    MongoDB是一个跨平台,面向文档的数据库,提供高性能,高可用性和易于扩展.MongoDB是工作在集合和文档上一种概念. 数据数 数据库是一个集合的物理容器.每个数据库获取其自己设定在文件系统上的文 ...

  6. 树 List Leaves 【用数组模拟了树状结构建树+搜索叶子节点+按照特殊规律输出每个叶子节点】

    Given a tree, you are supposed to list all the leaves in the order of top down, and left to right. I ...

  7. C#反射第二天

    原文:http://blog.csdn.net/zhaoguiqun/article/details/5954720 1.什么是反射Reflection,中文翻译为 反射.     这是.Net中获取 ...

  8. 数据结构习题 线段树&树状数组

    说明:这是去年写了一半的东西,一直存在草稿箱里,今天整理东西的时候才发现,还是把它发表出来吧.. 以下所有题目来自Lrj的<训练指南> LA 2191 单点修改,区间和  Fenwick直 ...

  9. Qt qobject_cast用法 向下转型

    函数原型: T qobject_cast ( QObject * object ) 本方法返回object向下的转型T,如果转型不成功则返回0,如果传入的object本身就是0则返回0. 在使用时有两 ...

  10. linux下如何查看某个软件 是否安装??? 安装路径在哪???

    <1>.在linux下如何判断是否已经安装某个软件? 我的系统是red hat 我用命令rpm查是否安装了某个软件(例如: matlab 与 fluent ),得到了如下的结果: 我用rp ...