Spring官网
Spring官网 外部配置加载顺序的说明
SpringBoot多环境的切换(生产环境、开发环境、测试环境)_周太阳的博客-CSDN博客_springboot测试生产环境切换
java maven 测试生产环境配置_SpringBoot生产环境和测试环境配置分离的教程详解_落云歌语文的博客-CSDN博客
server.servlet.context-path=/hello 指定请求的基础路径
黑马程序员SpringBoot教程,6小时快速入门Java微服务架构Spring Boot_哔哩哔哩_bilibili
(图片中的内容补充:application.properties中不写server.port=8080,也是默认启动8080端口的。)
-Dspring.profiles.active=development
--spring.profiles.active=testEnv
java -jar D:/aaa/bbb/ccc/JarPackage.jar --server.port=8888 --server.servlet.context-path=hehe
java -jar D:/aaa/bbb/ccc/JarPackage.jar --spring.profiles.active=product
我们写在resources目录下的那个application.propertes文件,将来 打包会打到classpath:/:classpath的根目录下。
同时在项目文件系统中:优先级是这样的
虽然你圈1和圈2优先级都是在项目根目录下,优先级比较高,但是最后打包的时候,你俩都不符合maven的结构,不会打入jar包中。所以到时候还是在resources目录下的配置文件最后被打入到classpath下的配置文件生效
spring.config.location=C:\aaa\bbb\ccc\application.properties
将一个配置文件放到和jar包目录的路径同一级别下的config目录下,配置文件将会被自动读取。
Spring官网 外部配置加载顺序的说明
spring:
profiles:
active: dev
---
#开发环境配置
spring:
profiles: dev
datasource:
url: jdbc:mysql://10.10.10.10:3306/shujuku?characterEncoding=utf8&useSSL=false&allowMultiQueries=true
username: root
password: 123456
---
#测试环境配置
spring:
profiles: test
datasource:
url: jdbc:mysql://10.11.11.11:3306/shujuku?characterEncoding=utf8&useSSL=false&allowMultiQueries=true
username: root
password: 123456
jvm参数:-Dspring.profiles.active=
java -jar -Dspring.profiles.active=prod springboot-0.0.1-SNAPSHOT.jar(命令行中指定active文件)
通过命令给application.properties动态赋值java -jar xxx.jar --server.port=8888
,通过使用–server.port属性来设置xxx.jar应用的端口为8888。
在命令行运行时,连续的两个减号–就是对application.properties中的属性值进行赋值的标识。所以,java -jar xxx.jar --server.port=8888命令,等价于我们在application.properties中添加属性server.port=8888,该设置在样例工程中可见,读者可通过删除该值或使用命令行来设置该值来验证。
执行java -jar xxx.jar --spring.profiles.active=test
,运行测试环境的配置
执行java -jar xxx.jar --spring.profiles.active=prod
,运行生产环境的配置
在某些情况下,应用的某些业务逻辑可能需要有不同的实现。例如邮件服务,假设EmailService中包含的send(String email)方法向指定地址发送电子邮件,但是我们仅仅希望在生产环境中才执行真正发送邮件的代码,而开发环境里则不发送以免向用户发送无意义的垃圾邮件。
我们可以借助Spring的注解@Profile实现这样的功能,这样需要定义两个实现EmailService借口的类:
/**
* 发送邮件接口.
*/
public interface EmailService {
/**发送邮件*/
publicvoid send();
}
发送邮件的具体实现(dev-开发环境的代码):
@Service
@Profile("dev") //开发环境的时候.
public class DevEmailServiceImpl implements EmailService{
@Override
publicvoid send() {
System.out.println("DevEmailServiceImpl.send().开发环境不执行邮件的发送.");
}
}
@Service
@Profile("prod") //生产环境.
public class ProdEmailServiceImpl2 implements EmailService{
@Override
publicvoid send() {
System.out.println("DevEmailServiceImpl.send().生产环境执行邮件的发送.");
//具体的邮件发送代码.
//mail.send();
}
}
Profile(“dev”)表明只有Spring定义的Profile为dev时才会实例化DevEmailService这个类。那么如何设置Profile呢?
在application.properties中加入:
spring.profiles.active=dev
java -jar app.jar --spring.profiles.active=dev
第七种:通过pom.xml选择运行环境
如果部署对应环境配置,只需把对应的activation->activeByDefault的属性改为true,其他的为false即可
pom.xml
dev
true
dev
test
test
pom.xml
dev
true
dev
pro
pro
test
test
org.springframework.boot
spring-boot-maven-plugin
org.apache.maven.plugins
maven-war-plugin
2.6
org.apache.maven.plugins
maven-compiler-plugin
3.8.0
1.8
UTF-8
true
src/main/resources/
config/dev/*
config/pro/*
config/test/*
views/*
src/main/resources/config/${profiles.active}
pom.xml
test
testEnv
true
pro
proEnv
false
ROOT
src/main/java
**/*.java
false
src/main/resources
**/*.properties
**/*.xml
**/*.pem
deployEnv/**
bak/**
sql/**
**/*.sql
**/*.java
src/main/resources/deployEnv/${env}
true
s_root/**
org.apache.maven.plugins
maven-war-plugin
2.6
org.apache.maven.plugins
maven-compiler-plugin
3.8.0
1.8
UTF-8
true
参考链接:史上最全的maven的pom.xml文件详解 - 阿豪聊干货 - 博客园
xxx
xxx
xxx
xxx
4.0.0
xxx
xxx
jar
1.0-SNAPSHOT
xxx-maven
http://maven.apache.org
A maven project to study maven.
jira
http://jira.baidu.com/banseon
Demo
[email protected]
[email protected]
[email protected]
http:/hi.baidu.com/banseon/demo/dev/
HELLO WORLD
banseon
[email protected]
Project Manager
Architect
demo
http://hi.baidu.com/xxx
No
-5
Project Manager
Architect
No
Apache 2
http://www.baidu.com/banseon/LICENSE-2.0.txt
repo
A business-friendly OSS license
scm:svn:http://svn.baidu.com/banseon/maven/banseon/banseon-maven2-trunk(dao-trunk)
scm:svn:http://svn.baidu.com/banseon/maven/banseon/dao-trunk
http://svn.baidu.com/banseon
demo
http://www.baidu.com/banseon
true/false
true/false
true/false
true/false
true/false
true/false
true/false
jdk版本,如:1.7
Windows XP
Windows
x86
5.1.2600
mavenVersion
2.0.3
/usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/
/usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/
true/false
true/false
true/false
true/false
true/false
true/false
banseon-repository-proxy
banseon-repository-proxy
http://192.168.1.169:9999/repository/
default
org.apache.maven
maven-artifact
3.8.1
jar
test
spring-core
org.springframework
true
true/false
true/false
banseon-maven2
banseon maven2
file://${basedir}/target/deploy
banseon-maven2
Banseon-maven2 Snapshot Repository
scp://svn.baidu.com/banseon:/usr/local/maven-snapshot
banseon-site
business api website
scp://svn.baidu.com/banseon:/var/www/localhost/banseon-web
value