由于项目的需要, 今天给spirng boot项目添加了profile功能。再网上搜索了一圈,也没有找到满意的参考资料,其实配置并不难,就是没有一个one stop(一站式)讲解的地方,所以有了写这篇博客的想法。由于本人水平有限,文中任何错误和纰漏欢迎大家反馈。希望本文可以给你带来帮助。

本文实现的目标:

1 使用了maven的profile功能

2 使用了Spring Boot的profile功能

3 集成了1和2的功能

4 在eclipse中运行mvn工程,使用开发环境的profile。

5 通过mvn在命令行中打包时,可以指定相应的profile。

什么是profile,解决什么问题呢?举个例子。一般在开发项目的时候要有多个环境,如开发环境、测试环境、生产环境,他们的配置文件一般不同。当我们要向各个环境发布程序时,需要人工处理这些配置文件,这显然麻烦且易错。有了profile,一切问题就简单了。只要在maven打包时使用下面命令即可。 view pl c

mvn clean package -Dmaven.test.skip=true -P prod

解释一下, -P prod 就是告诉maven要使用名字为prod的profile来打包,即所有的配置文件都使用生产环境(prod是自己定义的,在这里自定义为生产环境)。

实现思路简述:

maven支持profile功能,当使用maven profile打包时,可以打包指定目录和指定文件,且可以修改文件中的变量。spring boot也支持profile功能,只要在application.properties文件中指定spring.profiles.active=xxx 即可,其中xxx是一个变量,当maven打包时,修改这个变量即可。

具体实现:

A段,介绍coolpro工程的配置。

这个工程只需要修改pom.xml文件即可,需要定义具体maven的profile。定义完毕之后,当我们使用mvn clean package -P dev 时,maven就知道了profileActive=dev这个属性生效了。其中profileActive可以自己定义,就是一个maven的自定义属性。

pom.xml文件如下:

B段,介绍coolpro-api工程的配置

这个工程是一个web工程,主要是想根据指定的profile配置相应的spring boot运行环境。如:如果profile是dev,配置web服务器的监听端口为8010;profile为test,则端口为8020;profile为prod,则端口为8030。

工程中有4个文件:

application.properties, 包含通用配置的文件。文件中有spring.profiles.active=@profileActive@的属性。spring boot的profile是通过spring.profiles.active属性来配置的,这里的profileActive和上面coolpro工程中配置的profileActive属性名要一致。这样,在运行mvn命令时,maven就会帮我们将@profileActive@替换成指定的profile。

application-dev.properties, 当mvn -P dev时, 需要打包这个文件。

application-test.properties, 当mvn -P test时, 需要打包这个文件。

application-prod.properties, 当mvn -P prod时, 需要打包这个文件。

pom.xml配置:


application.properties文件:

其他3个文件见截图:

C段,介绍coolpro-core工程的配置

配置完成了。看效果。

1 在Eclipse环境中,直接运行项目。

2 使用maven命令,打包这个应用。

1)以开发环境打包:mvn clean package -Dmaven.test.skip=true -P dev -e

结果如下:

查看api工程:

查看core工程:

以此类推, 可以运行

mvn clean package -Dmaven.test.skip=true -P test -e

mvn clean package -Dmaven.test.skip=true -P prod -e

注意两点:

1 在属性文件中替换变量时,使用@符号。

最开始,使用$符号,就是不能替换,在网上搜索一下,原来是maven的maven-resources-plugin可以定义这个替换的符号。通过eclipse提供的Maven Pom editor编辑器打开pom.xml文件,在“Effective POM”选项卡中,可以看到定义的是@这个符号。

2 怎么在启动spring boot应用时,打印正在使用的profile,避免配置错误呢?可以参考如下代码。 view plain copy

 public static void main(String[] args) {ApplicationContext ctx = SpringApplication.run(RestApiApplication.class, args);String[] activeProfiles = ctx.getEnvironment().getActiveProfiles();for (String profile : activeProfiles) {logger.warn("Spring Boot 使用profile为:{}" , profile);}}

参考:http://docs.spring.io/spring-boot/docs/current/reference/html/

http://www.tuicool.com/articles/NjqAF3

http://blog.csdn.net/jbgtwang/article/details/8642979

http://zilongsky-gmail-com.iteye.com/blog/2032001

http://www.huangyunkun.com/2015/01/01/run-code-after-spring-boot-started/

原文链接:http://blog.csdn.net/lihe2008125/article/details/50443491

[Spring Boot 系列] 集成maven和Spring boot的profile功能相关推荐

  1. Spring Boot系列(一) Spring Boot介绍和基础POM文件

    2019独角兽企业重金招聘Python工程师标准>>> Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框 ...

  2. [Spring实战系列](5)Spring应用上下文

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/SunnyYoona/article/details/50618337 下面是Spring-Hello ...

  3. Spring Boot系列教程七:Spring boot集成MyBatis

    一.创建项目 项目名称为 "springboot_mybatis_demo",创建过程中勾选 "Web","MyBatis","M ...

  4. [Spring实战系列](8)Spring注入方式之setter注入

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/SunnyYoona/article/details/50631178 通常,JavaBean 的属性 ...

  5. 【Spring Cloud 系列】 二、Spring Cloud Eureka 的第一印象

    Eureka : 翻译翻译,找到了!(惊讶语气) Spring CLoud 中的 Spring Cloud Eureka,用于 分布式项目中的服务治理.是对Netflix 套件中的Eureka 的二次 ...

  6. 千锋教育威哥学Java——爆破专栏丨Spring Security系列教程之解决Spring Security环境中的跨域问题

    前言 上一章节中,一一哥 给各位讲解了同源策略和跨域问题,以及跨域问题的解决方案,在本篇文章中,我会带大家进行代码实现,看看在Spring Security环境中如何解决跨域问题. 需要更多教程,微信 ...

  7. Spring Security系列(32)- Spring Security Oauth2之authorities授权使用详解及源码分析

    前言 在oauth_client_details表中,有一个authorities字段,从字面上来看是授权的意思,在之前我们分析了可以通过resourceId和scope进行授权,那么这个author ...

  8. 【云原生微服务>SCG网关篇十二】Spring Cloud Gateway集成Sentinel API实现多种限流方式

    文章目录 一.前言 二.Gateway集成Sentinel API 0.集成Sentinel的核心概念 1)GatewayFlowRule 和 ApiDefinition 2)GatewayFlowR ...

  9. Spring源码深度分析一-Spring前世今生以及源码学习路线图

    大家好,我是王老狮,今天开始开新坑.作为JAVA程序员,Spring基本上是必备的技能,也是面试经常考核的技能,特别是大厂,Spring源码基本是必问的题目.但是很多同学看到源码就头疼,根本不知道源码 ...

  10. SpringBoot2.x系列教程(六十六)Spring Boot快速集成RocketMQ实战教程

    前言 RocketMQ是目前主流的消息中间件之一,并且自身就支持分布式功能.最初由阿里巴巴团队开发,并且经历过双十一等海量消息场景的考验,后捐赠给Apache开源基金会,这也是为什么我们经常听说Roc ...

最新文章

  1. UI学习第二篇 (控件)
  2. 下载SpringJar包
  3. flash流媒体资料
  4. 特征值与特征向量_矩阵的特征值和特征向量
  5. Panabit 安装指南
  6. WINDOWS SERVER 2003从入门到精通之活动目录数据库的维护
  7. 计算机发展初期 承载信息的媒体,《多媒体技术与应用》(本)阶段练习一
  8. ZLMediaKit_wiki
  9. android输入框圆形,GitHub - mylhyl/Android-CircleDialog: 仿IOS圆角对话框、进度条、列表框、输入框,ad广告框,支持横竖屏切换...
  10. 两个小块随鼠标拖动_html,类练习
  11. C语言编程-对数字进行分类
  12. 7-13 寻找大富翁 (25 分)
  13. 算法题-----题目、题解、个人算法、个人思考
  14. c语言小车程序,循迹小车的C语言程序(带注释)
  15. 方根法公式_(完整word版)层次分析法中用方根法计算权重在Excel中的具体操作
  16. 淘宝鹊桥计算工具安卓版小程序
  17. DirectShow SDK笔记【关于DirectShow(2)】
  18. 应用程序无法启动,错误代码0xc0000142
  19. 如何在APP中集成Google账户登录
  20. Java:Excel写入“合并单元格“

热门文章

  1. 怎么用psftp下载linux上的文件夹,使用PSFTP上传和下载Linux服务器文件.doc
  2. Tableau开始试用期后的破解方法
  3. mysql数据库置疑_SQL数据库置疑 823 824 错误修复 无法附加处理
  4. php表格好看样式,用html和css代码实现各种表格样式的总结
  5. 如何去追女生,看了你就成功了一半
  6. nsga2 matlab,NSGA2算法特征选择MATLAB实现(多目标)
  7. 常用和不常用端口一览表
  8. OpenCV 二值化
  9. hive 窗口函数使用
  10. php选课系统参考文献,学生选课系统参考文献