精华内容
下载资源
问答
  • SpringBoot2.0学习之yml配置文件,多环境配置文件 1. SpringBoot中常用的配置文件类型有两种 1. application.properties 格式如下: 2. application.yml 格式如下: 对比可以明显看出,yml格式的配置文件不仅减少了...

    SpringBoot2.0学习之yml配置文件,多环境配置文件

    1. SpringBoot中常用的配置文件类型有两种

    1. application.properties 格式如下:

    在这里插入图片描述

    2. application.yml 格式如下:

    在这里插入图片描述

    对比可以明显看出,yml格式的配置文件不仅减少了冗余的代码,而且可读性也更强了,所以现在yml配置文件用的很多。

    注意:在yml配置的 :(冒号) 后面必须有空格。

    2. 多环境配置文件

    一个项目从开发到上线会经过好几个环境,而每个环境的配置文件多多少少会有不同,每一次都更改的话太麻烦了,所以可以用一个配置来设置当前项目使用的是哪一个环境的配置文件,只需要创建不同环境的配置文件,部署前修改一下配置就可以了。

    常见的环境:

    1. dev - 开发环境

    2. test - 测试环境

    3. pre - 预生产环境

    4. prd - 生产环境

    如何设置 ?

    1. 创建不同环境的配置文件,例如:

    application-dev.yml
    name: dev-zhangsan
    
    application-test.yml
    name: test-zhangsan
    

    2. application.yml中添加配置

    spring:
      profiles:
        ### 当前环境使用的配置文件
        active: dev
    

    测试代码:

    @RestController
    @RequestMapping("/testValue")
    public class TestValueController {
    
        @Value("${name}")
        private String name;
    
        @RequestMapping("/name")
        public String name(){
            return this.name;
        }
    }
    

    访问 http://localhost:8080/testValue/name 得到

    在这里插入图片描述

    修改配置后

    spring:
      profiles:
        ### 当前环境使用的配置文件
        active: test
    

    重启后访问 http://localhost:8080/testValue/name 得到

    在这里插入图片描述


    得不到的永远在骚动,

    被偏爱的都有恃无恐。---- 《红玫瑰》

    展开全文
  • properties配置文件格式 在SpringBoot开发环境中,配置文件名称需要满足 application-{...application-dev.properties 表示开发环境配置文件 application-test.properties 表示测试环境配置文件 application-prod...

    properties配置文件格式

    在SpringBoot开发环境中,配置文件名称需要满足 application-{profile}.properties格式。其中,{profile}表示环境名称。例如:

    1. application-dev.properties 表示开发环境配置文件
    2. application-test.properties 表示测试环境配置文件
    3. application-prod.properties 表示生产环境配置文件

    具体springboot应用会加载哪一个配置文件,可以在application.properties配置文件中设置。

    上述spring.profiles.active=daily 配置表明springboot应用启动时需要加载 application-daily.properties 日常环境的配置文件。

    根据application.properties可以任意切换环境,不用在部署应用时再修改配置文件。

    更多原创文章请查看地址 https://www.mxblog.com.cn

    更多免费互联网架构书籍、大厂技术分享书籍、每年Java经典面试宝典可查看 Java学习资料

    展开全文
  • Spring多环境配置文件自动切换

    千次阅读 2018-06-17 21:00:06
    Spring多环境配置文件自动切换 序言 软件开发的一般流程为工程师开发 -> 测试 -> 上线,因此就涉及到至少三个不同的环境,开发环境、测试环境以及生产环境。(有些较复杂...

    ===

    Spring多环境配置文件自动切换

    序言

    软件开发的一般流程为工程师开发 -> 测试 -> 上线,因此就涉及到至少三个不同的环境,开发环境、测试环境以及生产环境。(有些较复杂的大型软件系统还有用户验收环境或公众测试环境等)通常这三个环境会有很多配置参数不同,例如数据源、文件路径、日志选项、中间件、缓存库等,如果每次上线一个新版本时都手动修改配置会十分繁琐,容易出错。
    能不能使用一些自动化的手段来进行管理呢
    常见的Spring项目的可以采取策略来自动化配置

    多环境配置自动切换的解决方案

    1 一劳永逸的方案

    更换Spring Boot

    Spring Boot使用了一个全局的配置文件application.xml
    通过启动时指定spring.profiles.active参数即可轻松切换配置文件

    2 投机取巧的方案

    在默认情况下 项目的配置文件是放在资源根目录下的
    例如../resource/application-context.xml
    由此想到 只要项目运行时 在根目录下配置不同的配置文件即可

    可以使用maven 在打包时 打入不同的配置文件内容
    根据不同环境分别打包 也可实现自动切换配置文件

    使用maven war包插件

    maven-war-plugin

    项目结构

    -src
     |---java
     |---resource
        |---prod
        |---test
     |---webapp
    

    pom文件

    先配置不同的打包环境 使用侧写描述符

    一组侧写配置

        <profile>
                <!---编号--->
                <id>product</id>
                <properties>
                <!---环境属性--->
                    <package.environment>prod</package.environment>
                </properties>
        </profile>

    完整配置 生产环节product 测试环境development 开发环境test

        <profiles>
            <profile>
                <id>product</id>
                <properties>
                    <package.environment>prod</package.environment>
                </properties>
            </profile>
            <profile>
                <id>development</id>
                <properties>
                    <package.environment></package.environment>
                </properties>
            </profile>
            <profile>
                <id>test</id>
                <properties>
                    <package.environment>test</package.environment>
                </properties>
            </profile>
        </profiles>
    <build>
            <plugins>
                <plugin>
                    <artifactId>maven-war-plugin</artifactId>
                    <version>2.2</version>
                    <configuration>
                        <!--没有web.xml文件是否打包失败 看你的项目情况 编程式配置当然是false-->
                        <failOnMissingWebXml>false</failOnMissingWebXml>
                        <archive>
                        <!-- 打包后不包括pom的描述文件 -->
                            <addMavenDescriptor>false</addMavenDescriptor>
                        </archive>
                        <!--过滤webapp目录下文件-->
                        <warSourceExcludes>WEB-INF/jspbackup/**</warSourceExcludes>
                        <!--配置分环境打包web资源-->
                        <webResources>
                            <resource>
                            <!--根据package.environment属性决定打包某个文件夹到war包中-->
                            <directory>src/main/resources/${package.environment}</directory>
                                <targetPath>WEB-INF/classes</targetPath>
                                <filtering>true</filtering>
                            </resource>
                        </webResources>
                    </configuration>
                </plugin>
            </plugins>
        </build>

    打包时 使用 maven 侧写命令

    例如 打生产环境包

    mvn package -p product

    打出来的包 就是只包含一组配置文件的war包了
    可以配置Jenkins、TeamCity等持续化集成工具使用

    3 使用侧写配置文件的方案

    • xml配置

    1 web.xml

    配置context-param 属性为spring的侧写配置

    spring.profiles.default

    这里配置为 development 开发环境 默认情况下就启动开发环境的配置

        <context-param>
            <param-name>spring.profiles.default</param-name>
            <!-- development:以开发环境启动,test以测试环境启动,production:以生产环境启动 -->
            <param-value>development</param-value>
            <!-- <param-value>test</param-value> -->
            <!-- <param-value>production</param-value> -->
        </context-param>

    2 spring配置文件 可以是application-context.xml 或者spring.**xml 由之前在web.xml中指定的值确定

    同样的 在其中添加不同环境下注册的bean 在beans标签的 profile属性中配置环境信息

    此处注册的是数据源

        <beans profile="development">
            <util:properties id="dev_p_datasource" location="classpath:/config/dev-config-datasource.properties" />
        </beans>
    
        <beans profile="test">
            <util:properties id="dev_p_datasource" location="classpath:/config/test-config-datasource.properties" />
        </beans>
    
        <beans profile="production">
            <util:properties id="prod_p_datasource" location="classpath:/config/config-datasource.properties" />
        </beans>
    
      ……

    搭配Spring后置处理器PropertyPlaceholderConfigurer使用 读取不同配置文件

        <beans profile="development">
            <context:property-placeholder location="classpath:/constants/test-constants.properties" />
        </beans>
    
        <beans profile="production">
            <context:property-placeholder location="classpath:/constants/constants.properties" />
        </beans>
    • 注解配置

    注解配置就简单多了

    @Component  
    @Profile("product")  
    public class DataSource{
    //……
    }
    • 运行时切换

    基本配置大体就是这两种
    但仅仅这样做并不能做到自动切换配置 还需要手动切换标签
    Spring提供了多种方法 以在项目启动时 按参数自动加载侧写配置

    按以下顺序加载属性
    * ServletConfig 配置参数 一般配置在DispatcherServlet的启动参数中
    * ServletContext 应用上下文参数 就是本文中采用的配置方法
    * JNDI 环境变量
    * JVM 系统运行参数 在容器添加JAVA_OPS,如:"-Dspring.profiles.active=dev"
    * JVM 环境变量 通过配置系统环境变量激活profile,spring.profile.default=dev

    如果有配置JNDI的话可以使用JNDI方式
    一般使用JVM运行参数

    从tomcat启动项目时
    找到/tomcat/bin/catalina.sh文件
    在其中 JAVA_OPTS选项下 添加"-Dspring.profiles.active=prod"
    此时 启动就是product生产环境的配置文件

    • 测试

    测试可以使用注解来加载不同的环境配置

    @ActiveProfiles("test")  

    测试类

    @RunWith(SpringJUnit4ClassRunner.class)  
    @ContextConfiguration(locations = "classpath:applicationContext.xml")  
    @ActiveProfiles("test")  
    public class BasicTest extends AbstractTransactionalJUnit4SpringContextTests 
    展开全文
  • 一:什么是classpath? classpath指的就是 *.java文件,资源文件等编译后存放的位置,对于maven项目就是指 target/classes:这个路径,只要编译后的文件在这个目录下,...springboot项目配置文件application.pr...

    一:什么是classpath?

    classpath指的就是 *.java文件,资源文件等编译后存放的位置,对于maven项目就是指 target/classes:这个路径,只要编译后的文件在这个目录下,springboot就可以找到,这里指的是maven项目,javaWeb项目可能会有区别。
    在这里插入图片描述

    二、自定义springboot配置文件路径

    springboot项目配置文件application.properties或者application.yml配置文件默认放置的位置是 **“classpath:/,classpath:/config/,file:./,file:./config/ ”**这4个位置。只要我们编译后的文件位于这4个位置,springboot就可以加载配置文件。

    但有时候我们需要以环境名称为标识,配置多个环境的配置文件。如下我们需要配置dev1、dev2、stg1、stg2、prd 共5个环境,每个环境下分别配置我们的application.properties,数据库配置,redis配置,日志配置等配置。
    在这里插入图片描述
    这时我们的资源文件的路径已经不再是springboot默认的配置路径了,因此springboot启动时将无法加载配置文件,这里就需要我们在启动类中手动指定配置文件的加载路径了。如下:

    public class DemoApplication  {
        public static void main(String[] args) {
             //springboot默认的配置文件路径
            // String addClassPath = "spring.config.location:classpath:/";
             //自定义的配置文件路径
            String addClassPath = "spring.config.additional-location:classpath:/";
            addClassPath += ",classpath:/config/";
            addClassPath += ",classpath:/config/dev1/";
            addClassPath += ",classpath:/config/dev2/";
            addClassPath += ",classpath:/config/stg1/";
            addClassPath += ",classpath:/config/stg2/";
            addClassPath += ",classpath:/config/prd/";
            new SpringApplicationBuilder(DemoApplication.class).properties("spring.config.name:application", addClassPath).build().run(args);
        }
    

    springboot的加载配置项在ConfigFileApplicationListener类中,可以自行翻看下源码定义。如下是我们从spring源码中复制过来的一分部,可以发现一些我们熟悉默认配置定义,如spring.profiles.active、classpath:/,classpath:/config/,file:./,file:./config/、spring.config.name等。

    public class ConfigFileApplicationListener
    		implements EnvironmentPostProcessor, SmartApplicationListener, Ordered {
    		
    	private static final String DEFAULT_PROPERTIES = "defaultProperties";
    
    	// Note the order is from least to most specific (last one wins)
    	private static final String DEFAULT_SEARCH_LOCATIONS = "classpath:/,classpath:/config/,file:./,file:./config/";
    
    	private static final String DEFAULT_NAMES = "application";
    
    	private static final Set<String> NO_SEARCH_NAMES = Collections.singleton(null);
    
    	/**
    	 * The "active profiles" property name.
    	 */
    	public static final String ACTIVE_PROFILES_PROPERTY = "spring.profiles.active";
    
    	/**
    	 * The "includes profiles" property name.
    	 */
    	public static final String INCLUDE_PROFILES_PROPERTY = "spring.profiles.include";
    
    	/**
    	 * The "config name" property name.
    	 */
    	public static final String CONFIG_NAME_PROPERTY = "spring.config.name";
    
    	/**
    	 * The "config location" property name.
    	 */
    	public static final String CONFIG_LOCATION_PROPERTY = "spring.config.location";
    
    	/**
    	 * The "config additional location" property name.
    	 */
    	public static final String CONFIG_ADDITIONAL_LOCATION_PROPERTY = "spring.config.additional-location";
    
    	/**
    	 * The default order for the processor.
    	 */
    	public static final int DEFAULT_ORDER = Ordered.HIGHEST_PRECEDENCE + 10;
    
    	/**
    	 * Name of the application configuration {@link PropertySource}.
    	 */
    	@Deprecated
    	public static final String APPLICATION_CONFIGURATION_PROPERTY_SOURCE_NAME = "applicationConfigurationProperties";
    
    	private final DeferredLog logger = new DeferredLog();
    
    	private String searchLocations;
    
    	private String names;
    
    	private int order = DEFAULT_ORDER;
          。。。。。。。。。(略)
    
    展开全文
  • 对于多环境配置,通过配置多份不同环境的配置文件,在通过打包启动命令进行区分会更灵活,方便。 解决 1.在spring中多环境配置文件名需要满足application-{profile}.properties的格式 其中{profile}对应的是环境标识...
  • spring: profiles: active: miservice, ${env}
  • pom文件配置profile及resourcesa解决spring不同环境配置文件问题 (一)摘要 我们使用spring的时候都会有配置文件,比如application.properties、log4j.properties和mybatis-config.xml等等。而我们一般都会有...
  • Maven插件-打包时多环境配置文件设置同一个项目,测试、生产环境配置内容是不同的,如何通过Maven插件在不同的环境下使用不同的配置文件呢?项目结构Profile定义一些列配置信息,然后通过命令激活指定信息,一般在...
  • 设置SpringMVC多环境配置文件

    千次阅读 2019-06-10 19:28:21
    然而开发环境、测试环境和生产环境所使用的配置可能都不一样,为了避免频繁的修改配置文件,我们可以参数来设置启用哪个环境的配置。 首先,在工程的/src/main/resources目录下分别创建dev(开发环境)、test(测试...
  • 后来自己搭建环境的时候,要本地调试、要上测试环境、要发布到生产等等事情,才发现配置多环境配置文件是多么重要,首先我们先来聊聊这样做,在实际开发中有哪些具体的作用。 一、环境介绍 1.dev环境 在平时开....
  • spring项目配置多环境配置文件

    千次阅读 2019-03-25 20:45:26
    package ... import java.io.IOException; import java.io.InputStream; import java.util.Properties; ... * 获取配置文件的方法 * @date 2019-03-25 * @author bean.zhang */ public class Custo...
  • 前言 上一篇介绍了Spring Boot的入门,知道了Spring Boot...所以,我们要想把Spring Boot玩的溜,就要懂得如何开启各个功能模块的默认配置,这就需要了解Spring Boot的配置文件application.properties。 正文 Spr...
  • Springboot之区分不同环境配置文件

    千次阅读 2019-02-02 16:50:38
    在正常开发中有下面三种配置文件环境,意思就是在不同阶段使用不同的配置文件,如果经常变动一个配置文件的话特别麻烦,那怎么办呢 application-dev.properties:开发环境 application-test.properties:测试环境 ...
  • Maven profile实现不同环境读取不同配置文件
  • idea maven多环境配置文件

    千次阅读 2017-08-23 14:39:11
    创建不同环境下的配置文件 application.properties中 spring.profiles.active=@envFlag@ 只有这一行 pom中 dev dev true
  • 一般会频繁更改配置文件  实际开发中可能会 由于配置文件出错导致的项目报错  spring cloud 提供了一个切换配置文件的方法很简单, 首先 配置文件的命名规范是  application-{fileName}.properties 例子如下:...
  • Mate桌面环境配置文件路径

    千次阅读 2017-07-05 10:38:26
    Mate桌面环境是Gnome2的延续,特点是相当轻量,以及较高的可定制性,原生...我原以为这桌面配置文件在~/.config/mate之类的文件夹里,然而并不是。Mate桌面是通过dconf配置的;因此配置文件在~/.config/dconf文件夹下
  • maven下多环境配置文件、属性文件管理 & Spring使用@value初始化字段值
  • Linux Bash的环境配置文件

    千次阅读 2017-05-11 18:56:49
    首先说一下login shell 和non-login shell,因为它们所读取的配置文件是不一样的。 login shell:登入时需要输入账号密码的shell,就是login shell non-login shell:就是在你使用图形界面的时候直接进入的shell就...
  • Spring-boot与maven多环境配置文件设置

    千次阅读 2017-09-25 23:57:33
    通常在开发时,不同的环境有不同的配置...创建属性配置文件首先为不同的环境配置不同的属性配置文件,命名需要满足application-{custom_suffix}.properties格式,custom_suffix为自定义后缀,例如生产配置文件起名为
  • 修改IDEA默认环境配置文件

    万次阅读 2016-11-18 14:38:29
    1.先说为什么建议修改路径 C盘空间不足,或者想重装系统等原因,不得不修改安装路径....(例如额没事就换个系统,哈哈,[C:\Users\Administrator\.IntelliJIdea14这个文件占很多的空间,以后的配置信息都会在这里存放,
  • 在不同的环境配置文件的内容可能会不一样,例如正式环境、测试环境、开发环境连的不是同一个数据库,访问的接口不一样,或者日志的级别不同。如果每次部署不同环境时都要改配置文件的各种配置是非常麻烦的。在这种...
  • Spring提供的profile特性可以对我们的配置文件进行隔离, 以便在不同的环境激活对应的配置项; 轻松实现不同环境不同配置项统一部署的形式; 最近在spring+dubbo的服务项目中, 想实现在不同的环境加载不同的配置文件, ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 156,564
精华内容 62,625
关键字:

环境配置文件