Lujianlong

  • 主页
  • 随笔
  • 相册
所有文章 友链 关于我

Lujianlong

  • 主页
  • 随笔
  • 相册

SpringBoot返回类型封装

2019-05-19

文章导航

× 文章目录
  1. 1. 多环境的配置
  2. 2. 实例演示
  3. 3. 通用的多环境配置方式
  4. 4. 个人总结和使用场景

多环境的配置

定义一个获取配置文件的方法,让环境变量决定调用哪个配置文件 :

  1. 核心思想: 定义一个私有方法,读取环境变量里的一个自定义属性,让这个属性决定服务器调用哪个配置文件,从而达到无需修改代码和配置文件就可以实现调用不同配置文件的目的;
  2. 基本组成:环境变量、tomcat启动入口、命令和jar包运行入口、配置文件选择器和配置文件;
  3. 优点:服务器调用不同的配置文件无需修改代码和配置文件,只需要配置环境变量即可,一定程度上降低了开发难度;

    实例演示

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    //启动类的编写
    @SpringBootApplication
    public class ServiceApplication extends SpringBootServletInitializer {

    //服务器配置文件类型
    private static final List<String> DEPLOY_ENV = Arrays.asList("develop","test","product");

    //通过tomcat容器托管的服务器入口,使用profiles方法来决定加载那一个配置文件
    @Override
    protected SpringApplicationBUilder configure(SpringApplicationBuilder application){
    return application.sources(ServiceApplication.class).profiles(getProfile());
    }

    //这个是通过命令或者打包成jar直接运行的入口,配置文件选择方式和上述一样
    public static void mian(String[] args){
    new SpringApplicationBuilder()
    .sources(ServiceApplication.class)
    .profiles(getProfile())
    .run(args);
    }

    //获取设置的系统环境变量,然后决定加载那一个配置文件
    private static final String getProfile(){
    Map<String,String> environment = System.getEnv();
    String env = environment.get("PROFILE_OF_ENV");
    String profile = (env!=null && DEPLOY_ENV.contains(env) ? env : "develop");
    return profile;
    }
    }

application-dev.properties:开发环境
application-test.properties:测试环境
application-prod.properties:生产环境
具体调用哪个配置文件,由 profiles() 方法决定,可以通过 getProfile() 方法读取环境变量进行配置 。
在这里插入图片描述

1
2
3
//环境变量
变量名(N): PROFILE_OF_ENV
变量值(V): "develop"

通用的多环境配置方式

application-dev.properties:开发环境
application-test.properties:测试环境
application-prod.properties:生产环境
至于哪个具体的配置文件会被加载,需要在application.properties文件中通过spring.profiles.active属性来设置,其值对应{profile}值。
在这里插入图片描述
如:spring.profiles.active=devlop就会加载application-develop.properties配置文件内容 ,这种每次配置一个新的环境都需要对application.properties文件进行修改,比较麻烦。

个人总结和使用场景

在后端开发中,应用程序在不同的环境可能会有不同的配置,例如数据库连接、日志级别等,开发,测试,生产每个环境可能配置都不一致。
个人觉得通过环境变量来决定调用哪个配置文件比较方便,设置好后不需要对配置文件进行修改。

本文作者: Lujianlong
本文链接: http://yoursite.com/2019/05/19/springboot多环境(devlop、test、product)配置/
本文访问量:144 次
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!
知识共享许可协议
赏

谢谢你请我吃糖果

支付宝
微信
  • springboot
  • 多环境的配置

扫一扫,分享到微信

微信分享二维码
java使用ini4j读写和修改ini配置文件(支持section)
SpringBoot 中使用 MongoDB 基于 MongoRepository增删改查(基础篇)
© 2019 Lujianlong
本站总访问量35465人次
Hexo Theme Yilia by Litten
  • 所有文章
  • 友链
  • 关于我

tag:

  • java8
  • Fork/Join框架
  • yillia
  • yilia
  • helper_live2d
  • 密码学基础
  • Base64算法
  • 加密与解密类
  • gitment评论系统
  • 使用方法
  • springboot
  • 返回类型封装
  • 日常bug
  • JDBC driver异常
  • java.security包
  • Tess4J
  • 图文识别
  • 定时任务
  • Optional
  • 密钥生成器
  • 默认接口实现
  • vue
  • vue组件介绍
  • vue父子组件间传值
  • vue项目的搭建
  • stream
  • 时间API
  • java
  • swagger2
  • LifecycleException解决思路
  • lombok
  • devtools
  • ini4j的使用
  • 日常bug记录
  • 添加依赖
  • mongodb进阶
  • 多数据源
  • 分页查询
  • Monogdb进阶
  • git
  • GIT 项目并托管到 GITHUB 仓库
  • 设计模式
  • 工厂方法
  • 数字签名算法
  • github
  • slf4j引入异常
  • 策略模式
  • 多环境的配置
  • 虚拟机的安装
  • 消息摘要算法
  • 适配器模式
  • 证书和密钥的存储类
  • 对称加密算法
  • 日志
  • Log4j日志配置
  • 实现HttpServletRequest.getInputStream多次读取
  • 手撸ini文件的读写和修改
  • 数字证书
  • Monogdb
  • 非对称加密算法

    缺失模块。
    1、请确保node版本大于6.2
    2、在博客根目录(注意不是yilia根目录)执行以下命令:
    npm i hexo-generator-json-content --save

    3、在根目录_config.yml里添加配置:

      jsonContent:
        meta: false
        pages: false
        posts:
          title: true
          date: true
          path: true
          text: false
          raw: false
          content: false
          slug: false
          updated: false
          comments: false
          link: false
          permalink: false
          excerpt: false
          categories: false
          tags: true
    

  • maven项目中引入本地jar包

    2019-10-21

    #maven#本地jar包引入

  • oracle使用sql语句删除某用户下所有的表

    2019-10-21

    #oracle#sql

  • MySQL的sql语句整理(超详细)

    2019-10-21

    #mysql

  • Springboot中基于注解使用缓存

    2019-08-20

    #springboot#caching

  • Spring Boot中整合Druid和Jpa实现简单的curd

    2019-08-18

    #springboot#druid和jpa的简单使用

  • springboot中集成druid和mybatits

    2019-08-15

    #springboot#druid和mysql的简单使用

  • 在docker中安装mysql详细攻略

    2019-08-13

    #docker#安装mysql

  • 自定义starter(实现HttpServletRequest重复读取)

    2019-08-13

    #springboot#自定义starter

  • Markdown语法整理(超详细)

    2019-07-31

    #markdown

  • SpringBoot中servlet三大组件的注册[Servlet,Filter,Listener]

    2019-07-24

    #springboot#servlet三大组件的注册

  • ASN.1入门(超详细)

    2019-07-18

    #ASN.1

  • SpringBoot的静态资源映射规则

    2019-07-16

    #springboot#静态资源映射规则

  • Springboot配置文件值注入

    2019-07-04

    #springboot#配置文件的注入

  • SpEL(Spring表达语言)表达式详述

    2019-07-04

    #springboot#SpEL表达式

  • 实现HttpServletRequest.getInputStream多次读取

    2019-06-28

    #日常bug#实现HttpServletRequest.getInputStream多次读取

  • Log4j日志配置

    2019-06-28

    #日志#Log4j日志配置

  • vue父子组件间传值

    2019-06-22

    #vue#vue父子组件间传值

  • vue组件介绍

    2019-06-22

    #vue#vue组件介绍

  • 前端项目中怎么添加依赖

    2019-06-22

    #vue#添加依赖

  • vue项目的搭建和常见问题的解决

    2019-06-22

    #vue#vue项目的搭建

  • mongodb多条件分页查询的三种方法

    2019-06-09

    #分页查询#Monogdb进阶

  • 多数据源mongodb的使用

    2019-06-08

    #mongodb进阶#多数据源

  • 手把手教你实现类似ini4j的方式创建读取和修改.ini文件(支持section)

    2019-06-07

    #java#手撸ini文件的读写和修改

  • java使用ini4j读写和修改ini配置文件(支持section)

    2019-06-07

    #java#ini4j的使用

  • JAVA8新特性之stream

    2019-05-19

    #java8#stream

  • Base64算法

    2019-05-19

    #密码学基础#Base64算法

  • 消息摘要算法(进阶)

    2019-05-19

    #密码学基础#消息摘要算法

  • 初等数据加密--对称加密算法

    2019-05-19

    #密码学基础#对称加密算法

  • 高等数据加密--非对称加密算法

    2019-05-19

    #密码学基础#非对称加密算法

  • 数字签名算法

    2019-05-19

    #密码学基础#数字签名算法

  • 数字证书

    2019-05-19

    #密码学基础#数字证书

  • JCE加密和解密(基础篇)

    2019-05-19

    #密码学基础#加密与解密类

  • KeyGenerator和KeyPairGenerator

    2019-05-19

    #密码学基础#密钥生成器

  • 证书和密钥的存储类

    2019-05-19

    #密码学基础#证书和密钥的存储类

  • 数字签名算法

    2019-05-19

    #密码学基础#数字签名算法

  • java.security包的部分类详解

    2019-05-19

    #密码学基础#java.security包

  • 消息摘要算法

    2019-05-19

    #密码学基础#消息摘要算法

  • 密码学基础

    2019-05-19

    #密码学基础

  • 三个简化开发的小技巧

    2019-05-19

    #lombok#swagger2#devtools

  • You must configure either the server or JDBC driver (via the serverTimezone conf解决办法

    2019-05-19

    #日常bug#JDBC driver异常

  • org.apache.catalina.LifecycleException解决办法

    2019-05-19

    #日常bug#LifecycleException解决思路

  • 安装虚拟机时趟过的坑

    2019-05-19

    #日常bug#虚拟机的安装

  • 解决slf4j导入失败

    2019-05-19

    #日常bug#slf4j引入异常

  • 将一个已存在的目录转换为一个 GIT 项目并托管到 GITHUB 仓库

    2019-05-19

    #git#GIT 项目并托管到 GITHUB 仓库

  • Hexo yilia主题的使用方法

    2019-05-19

    #yilia#使用方法

  • Hexo博客yilia主题添加Gitment评论系统

    2019-05-19

    #yilia#gitment评论系统

  • Hexo+yilia添加helper-live2d插件实现宠物动画

    2019-05-19

    #yilia#helper_live2d

  • Hexo+Github实现相册功能

    2019-05-12

    #yillia

  • 无法登陆github官网的解决办法

    2019-05-09

    #github

  • 前端开发兼容ie9趟过的坑

    2019-05-09

    #日常bug记录

  • Hello World

    2019-04-15

  • 友情链接1
  • 友情链接2
  • 友情链接3
  • 友情链接4
  • 友情链接5
  • 友情链接6
很惭愧

只做了一点微小的工作
谢谢大家