• Spring Boot 多环境如何配置


    Spring Boot 多环境如何配置

    Spring Boot 开发环境、测试环境、预生产环境、生产环境多环境配置

    通常一个公司的应程序可能在开发环境(dev)、测试环境(test)、生产环境(prod)中运行。那么是不是需要拷贝不同的安装包,在不同的环境下运行呢,在 Spring Boot 中一切已经为我们准备就绪,只需要简单的配置,你的程序就能在不同的环境中运行。


    一、Spring Boot 环境设置机制

    spring.profiles.active 属性可以为我们指定当前设置的环境,以此来选择我们的配置文件。例如我们有配置文件

    application.yml
    application-dev.yml
    application-test.yml
    application-prod.yml
    当执行 java -jar xxx.jar --spring.profiles.active=test 此时,系统将启用 application.yml 和 application-test.yml 配置文件。

    当执行 java -jar xxx.jar --spring.profiles.active=prod 此时,系统将启用 application.yml 和 application-prod.yml 配置文件。

    正是这种配置参数可以决定我们使用哪种配置文件,如果我们把不同环境的配置写在对应的配置文件中,我们就可以实现多环境机制。


    二、配置多环境

    正如 第一 点所述,我们配置不同的配置文件

    application.yml
    application-dev.yml(开发环境)
    application-test.yml(测试环境)
    application-uat.yml(预发布环境)
    application-prod.yml(生产环境)


    三、指定环境

    1 在 cmd 命令中指定

    java -jar xxx.jar --spring.profiles.active=dev

    2 在 application.yml 中指定

    spring:
       profiles:
         active: dev

    3 在IDEA 编辑器中指定
    在运行按钮(绿色三角形按钮)旁边选择 Edit Configurations...,在弹出的对话框中 Active profiles 输入 dev 或其他即可。

    这种方法只有在本地调试的时候才生效。


    四、程序中获取 applicaton 中的值

    @Component
    @ConfigurationProperties(prefix = "springstudy")
    public class MultienvConfig {
        private String demoname;
    
        public String getDemoname() {
            return demoname;
        }
    
        public void setDemoname(String demoname) {
            this.demoname = demoname;
        }
    }


    五、程序示例

    5.1 新建一个工程

    groupId=com.fishpro
    artifactId=springstudy
    项目名称 spring-boot-study-multienv

    5.2 新增以下文件
    默认为 application.properties 直接重命名为 application.yml,其他三个新建就可以

    • application.yml
    server:
      port: 8081
    spring:
      profiles:
        active: dev
    • application-dev.yml(开发环境)
    springstudy:
      demoname: multienv-dev
    • application-test.yml(测试环境)
    springstudy:
      demoname: multienv-test
    • application-uat.yml(预发布环境)
    springstudy:
      demoname: multienv-uat
    • application-prod.yml(生产环境)

    springstudy:
      demoname: multienv-prod

    5.2 新建文件 fishpro.springstudy.MultienvConfig.java

    @Component
    @ConfigurationProperties(prefix = "springstudy")
    public class MultienvConfig {
        private String demoname;
    
        public String getDemoname() {
            return demoname;
        }
    
        public void setDemoname(String demoname) {
            this.demoname = demoname;
        }
    }

    5.3 新建 controller/IndexController.java

    @Controller
    public class IndexController {
        private final Logger logger = LoggerFactory.getLogger(this.getClass());
        @Autowired
        MultienvConfig multienvConfig;
        @RequestMapping("/")
        String index(){
            logger.info(multienvConfig.getDemoname());
            return "index";
        }
    }

    5.4 运行 SpringstudyApplication.java

    右键 SpringstudyApplication.java 执行 Run SpringstudyApplication

    运行程序 http://localhost:8081/ 在控制台中输出

    2021-06-01 23:37:05.223  INFO 66267 --- [nio-8081-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
    2021-06-01 23:37:05.223  INFO 66267 --- [nio-8081-exec-1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
    2021-06-01 23:37:05.229  INFO 66267 --- [nio-8081-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 6 ms
    2021-06-01 23:37:05.252  INFO 66267 --- [nio-8081-exec-1] c.f.s.controller.IndexController         : multienv-dev

    修改 application.yml 中的配置

    server:
      port: 8081
    spring:
      profiles:
        active: prod
    运行程序 http://localhost:8081/ 在控制台中输出
    2021-06-01 23:42:44.906  INFO 66281 --- [nio-8081-exec-1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
    2021-06-01 23:42:44.910  INFO 66281 --- [nio-8081-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 4 ms
    2021-06-01 23:42:44.930  INFO 66281 --- [nio-8081-exec-1] c.f.s.controller.IndexController         : multienv-prod
  • 相关阅读:
    ASP.NET MVC 实现页落网资源分享网站+充值管理+后台管理(4)之业务仓储工厂
    ASP.NET MVC 实现页落网资源分享网站+充值管理+后台管理(3)之创建实体层
    ASP.NET MVC 实现页落网资源分享网站+充值管理+后台管理(2)之创建项目
    ASP.NET MVC 实现页落网资源分享网站+充值管理+后台管理(1)之数据库设计
    ASP.NET MVC 实现页落网资源分享网站+充值管理+后台管理(开篇)
    jQuery验证码发送时间秒递减(刷新存储cookie)
    闲来无事写一个jquery计算器,没有进行封装......
    ASP.NET MVC4.0+EF+LINQ+bui+网站+角色权限管理系统(7)
    <script runat=server>、<%%>和<%#%>的区别
    .net 实现 URL重写,伪静态
  • 原文地址:https://www.cnblogs.com/haolb123/p/14842046.html
Copyright © 2020-2023  润新知