两种方式实现Springboot的多环境配置(二)——使用maven+springboot的功能实现

背景

有三个配置文件(.properties文件和.yml文件一样道理嘛),分别是:

application.properties(默认配置)文件内容:server.port=8080

application-dev.properties(开发环境)文件:server.port=8082

application-prod.properties(生产环境)文件:server.port=8081

方式一、使用Springboot自带profile管理功能(点我直达)

方式二、使用maven+springboot的功能实现

特别说明,该方式可以实现只打包指定的配置文件,多余的配置文件不会被打包。

步骤:

1、在application.properties中增加属性:

spring.profiles.active=@activatedProperties@

修改后的 application.properties

spring.profiles.active=@activatedProperties@
server.port=8080

2、因为要使用maven的功能,所以我们需要修改pom.xml文件,修改后的pom.xml内容(摘要了profiles和resources)

 

    
    
        
            prod
            
                prod
            
        

        
            dev
            
                dev
            
            
                
                true
            
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        

        
            
                src/main/resources
                
                true
            
        
		
				
		
    

3、在IDE中运行时如何指定配置文件

两种方式实现Springboot的多环境配置(二)——使用maven+springboot的功能实现_第1张图片

两种方式实现Springboot的多环境配置(二)——使用maven+springboot的功能实现_第2张图片

在Active profiles中设置相应的配置即可:

设置为dev,表示使用application.properties + application-dev.properties

设置为prod,表示使用application.properties + application-prod.properties

如果application.properties和application-dev.properties中有重复的配置(比如我这里都配置了server.port),application-dev.properties中的配置会覆盖掉application.properties得配置,比如我在IDE中指定使用dev配置文件运行时的结果:

两种方式实现Springboot的多环境配置(二)——使用maven+springboot的功能实现_第3张图片

4、打包,打包相应的配置文件

#注意,这里打包的话,我们就需要指定-P参数

#将application-dev.properties打包
mvn clean package -Dmaven.test.skip=true -Pdev

#将application-prod.properties打包
mvn clean package -Dmaven.test.skip=true -Pprod

打包之后的application.properties中的@activatedProperties@就会被替换为相应的prod或者是dev

运行的时候直接使用:

java -jar .\springboot-study-0.0.1-SNAPSHOT.jar

当然,运行的时候就不能动态指定配置文件了,因为打包的时候就确定了,而且application.properties中的@activatedProperties@已经被替换成了prod或者dev

 

5、额外说明:

如果不需要打包其他多余配置文件(此时需要解除pom.xml中resources中的注释),那么打包之后,包里面就只有相应的配置文件了,比如指定了dev,那么相应的prod文件就不会被打包

pom.xml的resources摘要(注意,这是整个resources节点的摘要):


    
	
		src/main/resources
		
			**/application-*.*
		
	
    
	
		src/main/resources
        true
		
			**/application-${activatedProperties}.*
		
	

执行打包命令: 

mvn clean package -Dmaven.test.skip=true -Pdev 

打包之后的jar包文件如下,就只有application.properties 和 application-dev.properties 

两种方式实现Springboot的多环境配置(二)——使用maven+springboot的功能实现_第4张图片

 

你可能感兴趣的:(编程语言/IT/网络/java)