俄語在線網(wǎng)站制作百度seo多久能優(yōu)化關(guān)鍵詞
1. 區(qū)分環(huán)境的配置
1.1. properties 配置
假設,一個應用的工作環(huán)境有:dev、test、prod
那么,我們可以添加 4 個配置文件:
- applcation.properties - 公共配置
- application-dev.properties - 開發(fā)環(huán)境配置
- application-test.properties - 測試環(huán)境配置
- application-prod.properties - 生產(chǎn)環(huán)境配置
在 applcation.properties 文件中可以通過以下配置來激活 profile:
spring.profiles.active = test
1.2. yml 配置
與 properties 文件類似,我們也可以添加 4 個配置文件:
- applcation.yml - 公共配置
- application-dev.yml - 開發(fā)環(huán)境配置
- application-test.yml - 測試環(huán)境配置
- application-prod.yml - 生產(chǎn)環(huán)境配置
在 applcation.yml 文件中可以通過以下配置來激活 profile:
spring:profiles:active: prod
此外,yml 文件也可以在一個文件中完成所有 profile 的配置:
# 激活 prod
spring:profiles:active: prod
# 也可以同時激活多個 profile
# spring.profiles.active: prod,proddb,prodlog
---
# dev 配置
spring:profiles: dev# 略去配置---
spring:profiles: test# 略去配置---
spring.profiles: prod
spring.profiles.include:- proddb- prodlog---
spring:profiles: proddb# 略去配置---
spring:profiles: prodlog
# 略去配置
注意:不同 profile 之間通過 — 分割
2. 區(qū)分環(huán)境的代碼
使用 @Profile 注解可以指定類或方法在特定的 Profile 環(huán)境生效。
2.1. 修飾類
@Configuration
@Profile("production")
public class JndiDataConfig {@Bean(destroyMethod="")public DataSource dataSource() throws Exception {Context ctx = new InitialContext();return (DataSource) ctx.lookup("java:comp/env/jdbc/datasource");}
}
2.2. 修飾注解
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Profile("production")
public @interface Production {
}
2.3. 修飾方法
@Configuration
public class AppConfig {@Bean("dataSource")@Profile("development")public DataSource standaloneDataSource() {return new EmbeddedDatabaseBuilder().setType(EmbeddedDatabaseType.HSQL).addScript("classpath:com/bank/config/sql/schema.sql").addScript("classpath:com/bank/config/sql/test-data.sql").build();}@Bean("dataSource")@Profile("production")public DataSource jndiDataSource() throws Exception {Context ctx = new InitialContext();return (DataSource) ctx.lookup("java:comp/env/jdbc/datasource");}
}
3. 激活 profile
3.1. 插件激活 profile
spring-boot:run -Drun.profiles=prod
3.2. main 方法激活 profile
–spring.profiles.active=prod
3.3. jar 激活 profile
java -jar -Dspring.profiles.active=prod *.jar
3.4. 在 Java 代碼中激活 profile
直接指定環(huán)境變量來激活 profile:
System.setProperty("spring.profiles.active", "test");
在 Spring 容器中激活 profile:
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
ctx.getEnvironment().setActiveProfiles("development");
ctx.register(SomeConfig.class, StandaloneDataConfig.class, JndiDataConfig.class);
ctx.refresh();