精华内容
下载资源
问答
  • 注意副配置文件的命名方式是application-XXX.properties spring.profiles.active=druid spring.profiles.active=druid server.address=127.0.0.1 server.port=8081 #必须有 mybatis.mapper-locations=...

     

    注意副配置文件的命名方式是application-XXX.properties

    spring.profiles.active=druid   

    spring.profiles.active=druid
    
    
    server.address=127.0.0.1
    
    server.port=8081
    
    #必须有
    mybatis.mapper-locations=classpath*:com/hanhan/dao/xmlMapper/*.xml
    #必须有
    logging.config=classpath:logback.xml
    #必须有
    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    #必须有
    spring.datasource.url=jdbc:mysql://127.0.0.1:3306/ipace?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=CTT
    #必须有
    spring.datasource.username=root
    #必须用
    spring.datasource.password=root
    
    
    #32位随机字符串
    #dd9008e5ec8608c9eb9d57ab764651eb
    rand.str = ${random.value}
    #36位,比32位的多了4个-
    #0cf88531-9569-44c4-926e-2528dd5948e2
    rand.uuid = ${random.uuid}
    #随机int类型,主意有负数
    rand.intid = ${random.int}
    #随机long类型
    rand.longid = ${random.long}
    #100以内的随机int类型
    rand.number = ${random.int(100)}
    #0-10亿范围内的随机int类型
    rand.range = ${random.int[0,1000000000]}
    
    

     

    java -jar beetltest-0.0.1-SNAPSHOT.jar -spring.config.location=classpath:/application.properties

     

     

     

     

    展开全文
  • 目录结构 ![图片说明](https://img-ask.csdn.net/upload/201912/30/1577688575_584597.png) application.properties ...但是不管spring.profiles.active如何设置 生效的都是test ...但是 生效的配置还是test
  • SpringBoot多环境配置解决方案

    千次阅读 2018-12-28 17:09:24
    环境配置的解决方案有很,我看到不少...这里给出的是SpringBoot结合yml配置文件来实现环境配置配置示例: server: port: 2080 logging: level: cn.mrxionge.bootdemo: debug org.springframework.web...
    多环境配置的解决方案有很多,我看到不少项目的多环境配置都是使用Maven来实现的,在打包的时候,装入不同环境的配置文件。
    这里给出的是SpringBoot结合yml配置文件来实现多环境配置。
    配置示例:
    server:
      port: 2080
    logging:
      level:
        cn.mrxionge.bootdemo: debug
        org.springframework.web: debug
        org.springframework.data: debug
    mybatis-plus:
      executor-type: simple
    spring:
      datasource:
        #配置hikari连接池
        hikari:
          minimum-idle: 4
          maximum-pool-size: 16
          connection-timeout: 10000
          idle-timeout: 30000
          connection-init-sql: set names utf8mb4
      #指定profiles
      profiles:
        active: dev
    ---
    #开发环境配置
    spring:
      profiles: dev
      datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://127.0.0.1:3306/demos?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
        username: root
        password: 123456
    ---
    #测试环境配置
    spring:
      profiles: test
      datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://172.148.50.50:3306/demos?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
        username: root
        password: 123456
    ---
    #正式环境配置
    spring:
      profiles: prod
      datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://192.168.100.100:3306/demos?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
        username: root
        password: 123456
    
    在yml中,不同的profiles的配置用三个小横杆来分开。
    通常的做法是在yml文件的开头写一些全局的配置,在后面来写差异化配置。
    如果某个配置选项,存在于全局配置中,同时也存在于差异化配置中,那么在加载的时候,该配置选项的全局配置将被覆盖。

    加载多环境配置

    方法主要有两种,1.写在yml中;2.启动时添加命令
    在上面给出的配置文件示例中有这样两行配置

    在这里插入图片描述

    这样就告诉Spring,启动时加载dev环境的配置。但是这样做有一个弊端,如果你使用Jenkins来编译发布项目的话,每次切换环境,都要改一下配置文件的active选项,并且PUSH一次代码。这个时候使用第二种方案更好一些。
    在启动程序的时候,加上一行参数即可“–spring.profiles.active=dev”(注意是两个减号)。
    这个时候,我们的yml配置就不需要配置active选项了,如果你忘了删除这个配置,配置的加载跟随命令的设置。

    Profile注解的使用

    这个注解是告诉程序在某个环境下才加载这个Bean。举两个使用例子。
    自动任务(Scheduled):

    在这里插入图片描述

    如上图,Profile注解和Component注解配合使用,来达到在特定环境下加载这个自动任务组件。如果不是设定的环境,那么这个组件不会被加载,这样,里面写的自动任务也不会被执行。(组件是否被加载可以通过IDEA插件功能来看到,Component注解前面有一个画着对勾的小豆子,如果有就是加载了,反之则没有加载)
    动态加载JavaConfig:

    在这里插入图片描述

    这种用法是在特定的环境下加载我们的Config。我们也能通过Bean注解前面的豆子来观察到Bean的加载状态。上图中我配置的是Mybatis Plus的性能分析拦截器,这个组件只在dev环境下需要用到,这样配置的话,在别的环境下就不会加载这个组件了。
    【补充】
    我们也可以通过多个yml文件来达到多环境配置的效果
    例如截图:

    在这里插入图片描述

    这里yml文件的后缀代表环境名称,和启动命令相匹配
    注意:SpringBoot 2.4.0版本对配置文件进行了不小的修改
    详细请参考官方文档 Spring Boot Config Data Migration Guide
    展开全文
  • springboot多配置文件配置

    千次阅读 2018-12-25 17:41:29
    问题描述:  使用springboot开发项目,完成单元测试后...解决办法:使用springbootprofile配置,记录如下  一项目基本的会有三种环境,开发dev,测试test,生产 prod。每环境下的配置文件的内容都会不同...

    问题描述:

                  使用springboot开发项目,完成单元测试后。交给测试进行测试时,需要改一大堆的配置,jdbc,redis和zookeeper等。之后才能进行打包。非常费时费力。

    解决办法:使用springboot的多profile配置,记录如下

           一个项目基本的会有三种环境,开发dev,测试test,生产 prod。每个环境下的配置文件的内容都会不同,所以需要在不同环境下使用不同的配置文件。 
            profile 是spring用针对不同环境对不同的配置提供支持的,全局profile配置使用application-{profile}.properties.对于哪个配置会生效,需要在application.properties中通过spring.profiles.active属性来设置,其值对应{profile}值,例如:

      spring.profiles.active=dev 就会加载开发环境配置的信息。我们使用4个配置文件来解决

    划重点:application.properties文件中通过spring.profiles.active属性来设置,其值对应{profile}值。 

    例如我们配置了开发环境端口为8000,运行程序,效果如下:

    使用test,端口为8001

    由此可见,多profile配置已经生效。。O(∩_∩)O哈哈~!

    展开全文
  • 在开发springboot项目时,通常一套程序会被应用和安装到几不同的环境,比如:开发,测试,生产等。其中每环境的数据库地址,服务器端口等等配置都会不同。如果为不同的环境打包的时候都要频繁修改配置文件的话,...

    在开发springboot项目时,通常一套程序会被应用和安装到几个不同的环境,比如:开发,测试,生产等。其中每个环境的数据库地址,服务器端口等等配置都会不同。如果为不同的环境打包的时候都要频繁修改配置文件的话,那必将是个非常繁琐且容易发生错误的事情。

    对于多环境配置,通过配置多份不同环境的配置文件,在通过打包启动命令进行区分会更灵活,方便。
    解决
    1.在spring中多环境配置文件名需要满足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配置文件内容。

    2.如果不想在项目中写死环境配置,也可以在打包或者运行的时候传入环境参数来确定。

    **如:java -jar  ${jar_name} --spring.profiles.active=test**
    

    再比如多环境:

    启动命令为
    
    //开发环境
    
    java -jar app.jar --spring.profiles.active=dev--server.port=8060
    
    //测试环境
    
    java -jar app.jar --spring.profiles.active=qa --server.port=8060
    
    //生产环境
    
    java -jar app.jar --spring.profiles.active=prod --server.port=8060
    

    可以再结合日志配置:

    spring:
      profiles:
        #指定读取配置文件:dev(开发环境),prod(生产环境),qa(测试环境)
        active: qa
    
    #日志
    logging:
      config: classpath:logback-${spring.profiles.active}.xml
    

    3.如果同一个环境有多个配置文件,可以通过spirng.profiles.include实现多配置文件
    在这里插入图片描述

    4.如果想在某个配置文件中引用其他配置文件的内容,可以使用${}符号实现
    在这里插入图片描述
    在这里插入图片描述
    5.多环境下的优先级别是怎样的?

    
    #application.properties 优先级从高到低,application.yml文件优先级也一样  
    #级别高的会覆盖级别低的,级别高没有的,级别低有的配置项会同样生效  
       
    #1-- 项目根目录config文件夹里面(优先级最高)  
    #./config/  
       
    #2--项目根目录  
    #./    
       
    #3-- src/main/resources/config/文件夹里面  
    #classpath:/config    
       
    #4-- src/main/resources/  
    #classpath:/     
       
    #1-4优先级从高到低,优先级高的配置内容会覆盖优先级低的配置内容  
    server.port=8081 
    

    在这里插入图片描述
    在运行时,使用cmd命令行指定特定的配置文件(优化级最高),cmd命令如下:
    这种情况可以加载打包后需要修改配置文件的运行,可以使用项目外的配置,如D盘的配置

    java -jar lqyspringboot-0.0.1-SNAPSHOT.jar --spring.config.location=D:/application.properties

    注意:

    级别高的配置会覆盖级别低的相同配置,级别高的配置没有的项,级别低有的项会同样生效。
    也就是说,无论级别高低,配置都会生效,只是相同的配置被级别高的配置覆盖。  
    

    6.如何获取application.yml中的变量?
    上面已经使用了变量,这里再统计一下
    第一种方式获取

    1.application.yml文件

    server:
      port: 8088  #项目端口号
      servlet:
        context-path: /SpringBoot  #访问项目名称
      
    zidingyiUrl:
      http://127.0.0.0:8088
    

    2.一个TestController测试类

    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.context.annotation.PropertySource;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
     
    @RestController
    @PropertySource("classpath:application.yml")
    //读取application.yml文件
    public class TestController {
     
        //获取项目端口号
        @Value("${server.port}") 
         private String servePrort; 
             
             
        @Value("${server.servlet.context-path}") 
        private String contextPath; 
             
        @Value("${zidingyiUrl}") 
           private String zidingyiUrl;
         
            //http://localhost:8088/SpringBoot/get
            @GetMapping("/get")
            public void get() {
            //获取项目端口号server.port=8088
            System.out.println("项目端口号为:"+servePrort);
            //获取获取项目名称
            System.out.println("获取项目名称为:"+contextPath);
            //获取自定义属性zidingyiUrl
            System.out.println("获取项目名称为:"+zidingyiUrl);
            }
    }
      
    

    3.启动项目访问http://localhost:8088/SpringBoot/get可以看到控制台输出

    项目端口号为:8088
    获取项目名称为:/SpringBoot
      
    

    第二种方式获取

    1.application.yml文件

    server:
      port: 8088  #项目端口号
      servlet:
        context-path: /SpringBoot  #访问项目名称
      
    zidingyiUrl:
      http://127.0.0.0:8088
    

    2.一个GetPropertiesController测试类

    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.core.env.Environment;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
     
    @RestController
    public class GetPropertiesController {
     
        @Autowired 
          private Environment environment;
         
        //http://localhost:8088/SpringBoot/getProperties
        @GetMapping("/getProperties")
        public void getProperties() {
        //获取项目端口号server.port=8088
        System.out.println("项目端口号为:"+environment.getProperty("server.port"));
        //获取获取项目名称
        System.out.println("获取项目名称为:"+environment.getProperty("server.servlet.context-path"));
        //获取自定义属性zidingyiUrl
        System.out.println("获取自定义属性路径为:"+environment.getProperty("zidingyiUrl"));
        }
         
    }
      
    

    3.启动项目访问http://localhost:8088/SpringBoot/ getProperties可以看到控制台输出

    项目端口号为:8088
    获取项目名称为:/SpringBoot
    获取自定义属性路径为:http://127.0.0.0:8088
    

    7.@ConfigurationProperties下application.yml中的使用
      
    在 Spring Boot 项目中,为满足以上要求,我们将大量的参数配置在 application.properties 或 application.yml 文件中,通过 @ConfigurationProperties 注解,我们可以方便的获取这些参数值

    使用 @ConfigurationProperties 配置模块
    假设我们正在搭建一个发送邮件的模块。在本地测试,我们不想该模块真的发送邮件,所以我们需要一个参数来「开关」 disable 这个功能。另外,我们希望为这些邮件配置一个默认的主题,这样,当我们查看邮件收件箱,通过邮件主题可以快速判断出这是测试邮件

    在 application.properties 文件中创建这些参数:

    在这里插入图片描述
    我们可以使用 @Value 注解或着使用 Spring Environment bean 访问这些属性,是这种注入配置方式有时显得很笨重。我们将使用更安全的方式(@ConfigurationProperties )来获取这些属性
    在这里插入图片描述
    @ConfigurationProperties 的基本用法非常简单:我们为每个要捕获的外部属性提供一个带有字段的类。请注意以下几点:

    前缀定义了哪些外部属性将绑定到类的字段上
    根据 Spring Boot 宽松的绑定规则,类的属性名称必须与外部属性的名称匹配
    我们可以简单地用一个值初始化一个字段来定义一个默认值
    类本身可以是包私有的
    类的字段必须有公共 setter 方法

    Spring 宽松绑定规则 (relaxed binding)
    Spring使用一些宽松的绑定属性规则。因此,以下变体都将绑定到 hostName 属性上:
    在这里插入图片描述
    如果我们将 MailModuleProperties 类型的 bean 注入到另一个 bean 中,这个 bean 现在可以以类型安全的方式访问那些外部配置参数的值。

    但是,我们仍然需要让 Spring 知道我们的 @ConfigurationProperties 类存在,以便将其加载到应用程序上下文中
    激活 @ConfigurationProperties
    对于 Spring Boot,创建一个 MailModuleProperties 类型的 bean,我们可以通过下面几种方式将其添加到应用上下文中

    首先,我们可以通过添加 @Component 注解让 Component Scan 扫描到
    在这里插入图片描述
    很显然,只有当类所在的包被 Spring @ComponentScan 注解扫描到才会生效,默认情况下,该注解会扫描在主应用类下的所有包结构

    我们也可以通过 Spring 的 Java Configuration 特性实现同样的效果:
    在这里插入图片描述
    只要 MailModuleConfiguration 类被 Spring Boot 应用扫描到,我们就可以在应用上下文中访问 MailModuleProperties bean

    我们还可以使用 @EnableConfigurationProperties 注解让我们的类被 Spring Boot 所知道,在该注解中其实是用了@Import(EnableConfigurationPropertiesImportSelector.class) 实现,大家可以看一下
    在这里插入图片描述
    激活一个 @ConfigurationProperties 类的最佳方式是什么?
    所有上述方法都同样有效。然而,我建议模块化你的应用程序,并让每个模块提供自己的@ConfigurationProperties 类,只提供它需要的属性,就像我们在上面的代码中对邮件模块所做的那样。这使得在不影响其他模块的情况下重构一个模块中的属性变得容易。

    因此,我不建议在应用程序类本身上使用 @EnableConfigurationProperties,如许多其他教程中所示,是在特定于模块的 @Configuration 类上使用@EnableConfigurationProperties,该类也可以利用包私有的可见性对应用程序的其余部分隐藏属性。

    展开全文
  • SpringBoot和Mybatis配置多数据源连接多个数据库

    万次阅读 热门讨论 2019-04-26 12:02:43
    目前业界操作数据库的框架一般是Mybatis,但在很多业务场景下,我们需要在一个工程里配置多个数据源来实现业务逻辑。在SpringBoot中也可以实现多数据源并配合Mybatis框架编写xml文件来执行SQL。在SpringBoot中,配置...
  • 1、加载多个配置文件 需求描述: 项目结构: 详细配置: 配置yml 测试: 2、获取配置文件中的数组值 需求描述: 实现方式: 测试: 1、加载多个配置文件 需求描述: 项目中需要根据功能配置多个配置...
  • classpath指的就是 *.java文件,资源文件等编译后存放的位置,对于maven项目就是指 target/classes:这路径,只要编译后的文件在这目录下,springboot就可以找到,这里指的是maven项目,javaWeb项目可能会有区别...
  • SpringBoot 多个拦截器配置

    千次阅读 2018-12-13 17:05:53
    原文地址: https://blog.csdn.net/levae1024/article/details/83512292 SpringBoot的拦截器实现和SpringMVC一致,通过配置把拦截器注入到Spring容器中去; 但配置方式不一样, 完成代码如下: 一、新建两拦截器类 ...
  • SpringBoot 模块 配置覆盖问题

    千次阅读 2018-12-25 11:13:59
    因为现在手上有个项目,在未拆分成微服务之前,会有多个层级的模块依赖,如下图: 现在有个问题,我在common里面配置了一个属性值叫做:project.mark=123, 在 biz module1 中需要它的值是 456,在ui-module1中...
  • SpringBoot 配置多个JdbcTemplate

    千次阅读 2019-09-22 01:04:40
    SpringBoot 配置多个JdbcTemplate 前言 开发中使用多数据源配置是一个非常常见的需求。Spring和SpringBoot中,对此都有相应的解决方案。 多数据源的首选分布式数据库中间件MyCat或者Sharing-Jdbc去解决相关问题...
  • springboot配置多个Activemq

    千次阅读 2018-08-23 15:20:36
    springboot 1.5.10.RELEASE 配置文件 spring.inner.activemq.brokerUrl=tcp://1.1.1.1:61616?wireFormat.maxInactivityDuration=10000 spring.inner.activemq.user=admin spring.inner.activemq.password=admin....
  • SpringBoot 项目配置统一、公共属性

    千次阅读 2019-10-16 00:00:56
    使用Spring Cloud开发项目,当有多个项目时,有些配置其实是相同的,而且每个项目都需要配置(比如:注册中心的地址)。希望能将它们统一起来,而不是每修改一处则所有的都要修改。 索求:将多个项目的相同配置统一...
  • SpringBoot笔记:SpringBoot启动参数配置

    千次阅读 2021-01-23 12:52:47
    1、熟悉springboot多环境配置 2、熟悉springboot使用jar包启动时候的参数含义 测试代码 配置文件配置 application.yml # springboot多环境配置 # springboot多环境配置 #端口,项目上下文 server: port: 8080 ...
  • SpringBoot开发环境中,配置文件名称需要满足 application-{profile}.properties格式。其中,{profile}表示环境名称。例如: application-dev.properties 表示开发环境配置文件 application-test.properties 表示...
  • SpringBoot配置多个cache,实现多个cacheManager灵活切换 注:本文所用的springBoot版本号为1.5.6.6 目的&效果 在springBoot中同时配置了RedisCache和ehCache,当使用@Cacheable注解时,默认...
  • 【原创】Happyjava2019-06-18 ...「快学springboot」使用springboot实现发送邮件功能 为什么阿里Java规约手册要求谨慎使用Arrays.asList方法 面试官:说说Java中的transient关键字 「快学springboot」在springbo...
  • SpringBoot配置多个RabbitMQ

    千次阅读 2019-06-04 09:57:21
    2.配置mq package com.medrd.hpay.config; import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory; import org.springframework.amqp.rabbit.connection....
  • 环境配置 不同环境的配置yml文件名不一样: appointment.yml appointment-dev.yml(开发环境) appointment-test.yml(测试环境) appointment-prod.yml(正式环境) yml示例 application.yml 示例: 注意:配置多...
  • springboot项目如何配置多数据源

    万次阅读 2021-01-13 00:28:39
    1、引入需要的pom依赖 <dependency> <groupId>...3.默认是主数据库,需要使用别的数据库只需要使用@DS注解然后加上配置yml文件的数据库就行了(如:db2) @DS("db2") List<User> queryTest();
  • 1.环境介绍 ...笔者主要记录下关于springboot如何通过多个yml实现数据库环境部署时自动切换配置的方式,笔者使用的是springboot工程开发,所以项目运行以jar包方式运行。首先介绍部署时切换的方式。
  • springboot导入多个配置文件

    万次阅读 2018-07-24 09:44:19
    springboot导入配置文件的类如下: package com.upin.config; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.ImportResource; @Configuration...
  • springboot集成quartz配置多个job任务

    千次阅读 2016-12-15 11:32:57
    1、pom配置<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <groupId>org.quartz-scheduler <arti
  • springboot多配置文件,多个application

    千次阅读 2017-11-14 15:46:52
    生产部署的配置和测试的配置往往是不一样的,如果都是在一application.properties文件中修改,不但容易出现遗漏,而且反反复复很是麻烦。如果采用springboot的profiles来区分生产和测试,那么可以减少许多不必要的...
  • springboot整合quartz配置多任务

    万次阅读 热门讨论 2018-01-18 21:51:43
    在这里写一个配置quartz任务的demo, 使用两个任务, 使用SimpleTrigger和CronTrigger两种触发器, 最后一起注册到Scheduler中 关于quartz 定时方面的配置请另外百度。 maven依赖 dependency&gt;

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 179,530
精华内容 71,812
关键字:

springboot多个配置

spring 订阅