springboot系列三、springboot 单元测试、配置访问路径、多个配置文件和多环境配置,项目打包发布
一、单元测试
生成的demo里面包含spring-boot-starter-test :测试模块,包括JUnit、Hamcrest、Mockito,没有的手动加上。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test
</artifactId> </dependency>
添加测试类:
@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoApplicationTests { private MockMvc mvc; @Before
public void setUp(){
mvc = MockMvcBuilders.standaloneSetup(new HelloWorldController()).build();
} @Test
public void getHello() throws Exception {
mvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andExpect(content().string(equalTo("Hello World")));
}
}
二、修改访问端口和路径
1、修改端口号
- 使用properties文件方式:
在src/main/resoutces目录下创建:application.properties,添加如下配置即可修改端口号:
server.port=8088
- 使用yml文件方式:
在src/main/resoutces目录下创建:application.yml,添加如下配置即可修改端口号:
server:
port:8088
2、修改项目访问路径
使用properties文件方式:
在application.properties,添加如下配置即可修改项目访问路径:
server.servlet.context-path=/springboot-demo
- 使用yml文件方式:
在application.yml,追加如下配置即可修改项目访问路径:
server:
port:8088
servlet:
context-path: /springboot-demo
3、修改默认容器
在之前默认使用的 WEB 容器是 Tomcat 容器,实际上在 SpringBoot 里面如果用户有需要也可以将容器更换为 jetty 容器,如果 现在要想使用这个容器,则只需要追加一些依赖即可:
1、移除默认容器
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
2、添加jetty
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
三、加载读取多个配置文件
1、application.properties 和 application.yml的优先级
那么这个时候将优先进行application.properties配置文件的加载,如果现在两个配置项的作用冲突了,则以 properties 为主,如果不冲突,则以存在的为主。
2、多配置文件支持(yml和property)
格式必须是application-xxx.properties或者是application-xxx.yml命
在application.properties或application.yml中引入,有两个用法:
1、直接引入
创建application-message.properties,内容如下:
code=-message
content=消息不存在
在application.properties或application.yml中引入,多个文件用逗号隔开
spring.profiles.include=message
注入到bean中
@Component
public class Message{
@Value("${code}")
private String code; @Value("${content}")
private String content; public String getCode() {
return code;
} public void setCode(String code) {
this.code = code;
} public String getContent() {
return content;
} public void setContent(String content) {
this.content = content;
}
}
使用:
package com.example.demo.controller; import com.example.demo.Property.BaseMsg;
import com.example.demo.Property.Message;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import java.util.Properties; @RestController
public class HelloWorldController { @Autowired
private Message message; @RequestMapping("/message")
public String message() {
System.out.println(message.getCode());
return "message:"+message.getCode();
}
}
测试,访问:http://localhost:8082/message
2、特定环境激活
spring.profiles.active=devMsg
或通过启动参数激活,在启动命令中添加
-Dspring.profiles.active="devMsg"
@Profile表示只有当spring.profiles.active激活配置一致时才会注入,用法示例:
@Component
@Profile("testMsg")
public class TestMsg extends BaseMsg{
@Value("${msg.code}")
private String msgCode;
public String getMsgCode() {
return msgCode;
}
public void setMsgCode(String msgCode) {
this.msgCode = msgCode;
}
}
四、springboot多环境配置
多环境配置有两种方式,一种配置在同一个文件中,另一种时时配置在多个文件中。
1、配置在多个文件中
在Spring Boot中多环境配置文件名需要满足application-{profile}.properties
的格式,其中{profile}
对应你的环境标识,比如:
application-dev.properties:开发环境
application-test.properties:测试环境
application-prod.properties:生产环境
至于哪个具体的配置文件会被加载,需要在application.properties
文件中通过spring.profiles.active
属性来设置,其值对应{profile}
值。
如:spring.profiles.active=test
就会加载application-test.properties
配置文件内容
或
执行java -jar xxx.jar --spring.profiles.active=test,也就是测试环境的配置(test)
2、配置同一个文件中
spring:
profiles:
active: pro
server:
servlet:
context-path: /springboot-demo
---
#开发环境配置
spring:
profiles: dev
server:
port:
---
#测试环境配置
spring:
profiles: test
server:
port:
---
#生产环境配置
spring:
profiles: pro
server:
port:
通过spring.profiles.active: pro或者java -jar xxx.jar --spring.profiles.active=pro动态切换环境,---分隔符,分开后相当于单独一个文件,---前是公共配置。System.getProperty()方法获取系统变量和启动参数。
五、打包发布
1、打包
- 运行maven package,如果项目有改动需要先运行maven clean
- 打包完,target下面会有项目jar包,demo-0.0.1-SNAPSHOT.jar
2、运行
拷贝demo-0.0.1-SNAPSHOT.jar到指定目录,运行
java -jar demo-0.0.-SNAPSHOT.jar
访问:http://192.168.1.100:8081/hello
springboot系列三、springboot 单元测试、配置访问路径、多个配置文件和多环境配置,项目打包发布的更多相关文章
- Servlet3.0注解配置访问路径和urlParttern配置
一.Servlet用注解配置访问路径 二.IDEA的tomcat相关配置 其中,第一点的配置文件,直接在IDEA的可视化操作界面修改就可以改掉配置文件中内容: 三.urlParttern配置 其中,* ...
- SpringBoot系列三:SpringBoot基本概念(统一父 pom 管理、SpringBoot 代码测试、启动注解分析、配置访问路径、使用内置对象、项目打包发布)
声明:本文来源于MLDN培训视频的课堂笔记,写在这里只是为了方便查阅. 1.了解SpringBoot的基本概念 2.具体内容 在之前所建立的 SpringBoot 项目只是根据官方文档实现的一个基础程 ...
- Spring boot 默认静态资源路径与手动配置访问路径
在application.propertis中配置 ##端口号server.port=8081 ##默认前缀spring.mvc.view.prefix=/## 响应页面默认后缀spring.mvc. ...
- Spring boot 默认静态资源路径与手动配置访问路径的方法
这篇文章主要介绍了Spring boot 默认静态资源路径与手动配置访问路径的方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下 在application.propertis中配置 ##端口号 ...
- spring:设置映射访问路径 或 xml配置访问路径 (spring mvc form表单)
项目hello, 在src/main/java下面建一个目录: charpter2 一.xml配置访问路径 web.xml <web-app> <display-name>Ar ...
- SpringCloud系列三:SpringSecurity 安全访问(配置安全验证、服务消费端处理、无状态 Session 配置、定义公共安全配置程序类)
1.概念:SpringSecurity 安全访问 2.具体内容 所有的 Rest 服务最终都是暴露在公网上的,也就是说如果你的 Rest 服务属于一些你自己公司的私人业务,这样的结果会直接 导致你信息 ...
- SpringBoot系列三:SpringBoot自定义Starter
在前面两章 SpringBoot入门 .SpringBoot自动配置原理 的学习后,我们对如何创建一个 SpringBoot 项目.SpringBoot 的运行原理以及自动配置等都有了一定的了解.如果 ...
- SPRING-BOOT系列之SpringBoot快速入门
今天 , 正式来介绍SpringBoot快速入门 : 可以去如类似 https://docs.spring.io/spring-boot/docs/2.1.0.BUILD-SNAPSHOT/refer ...
- SpringBoot系统列 2 - 配置文件,多环境配置(dev,qa,online)
实现项目的多环境配置的方法有很多,比如通过在Pom.xml中配置profiles(最常见) 然后在Install项目打War包的时候,根据需求打不同环境的包,如图: 这种配置多环境的方法在SSM框架中 ...
随机推荐
- 【BZOJ4738/UOJ#276】汽水(点分治,分数规划)
[BZOJ4738/UOJ#276]汽水(点分治,分数规划) 题面 BZOJ UOJ 题解 今天考试的题目,虽然说是写完了,但是感觉还是半懂不懂的来着. 代码基本照着\(Anson\)爷的码的,orz ...
- [NOIP提高组2018day2t1]旅行
题目描述 给定n个城市,m条双向道路的图, 不存在两条连接同一对城市的道路,也不存在一条连接一个城市和它本身的道路.并且, 从任意一个城市出发,通过这些道路都可以到达任意一个其他城市.小 Y 只能通过 ...
- Memcached在Windows下的配置和使用
Memcached学习笔记---- 安装和配置 首先,下载Memcached相关文件. 打开控制台,进入Memcached主程序目录,输入: memcached.exe -d install //安装 ...
- gradle下载的依赖包位置 及 修改
gradle下载的依赖包位置 2018年08月01日 00:37:06 LuckyJiang-2019 阅读数:3569 Mac系统默认下载到: /Users/(用户名)/.gradle/cach ...
- EOJ2018.10 月赛(B 数学+思维题)
传送门:Problem B https://www.cnblogs.com/violet-acmer/p/9739115.html 题意: 找到最小的包含子序列a的序列s,并且序列s是 p -莫干山序 ...
- 【bzoj5161】最长上升子序列 状压dp+打表
题目描述 现在有一个长度为n的随机排列,求它的最长上升子序列长度的期望. 为了避免精度误差,你只需要输出答案模998244353的余数. 输入 输入只包含一个正整数n.N<=28 输出 输出只包 ...
- ARP协议原理学习
一.ARP的作用. 首先在window 的命令行中输入arp -a即可查看本机的arp缓存表.主机要发送数据包时,需要填充目的IP及其IP地址对应的MAC.当我们只有目的IP地址时,如何得到其对应的M ...
- 多目标遗传算法 ------ NSGA-II (部分源码解析)二元锦标赛选择 tourselect.c
tourselect.c 文件中共有两个函数: selection (population *old_pop, population *new_pop) individual* tournament ...
- vue项目 打包部署上线
1. npm run dev:本地开发的时候做调试用的. 2. npm run build:打包部署上线,生成一个 dist 文件夹. 注意:用 npm run build 时,常遇到因引用路径不对导 ...
- javascript 事件冒泡与取消冒泡
事件冒泡: 当一个元素上的事件被触发时,比如说鼠标点击了一个按钮,同样的事件将会在那个元素的所有祖先中被触发,这一过程被称为事件冒泡. 这个事件从原始祖先开始,一直冒泡到DOM树的最上层.(bug) ...