From d566de488fd8b2b6d3293f661b7c8c491ae9c70e Mon Sep 17 00:00:00 2001 From: "qinxiaodong@pannk.com" Date: Mon, 2 Nov 2020 11:06:10 +0800 Subject: [PATCH] profiles --- .../commonconfig/CommonConfigApplication.java | 8 +++++--- .../controller/IndexController.java | 8 ++++++-- .../src/main/resources/application-dev.yml | 2 ++ .../src/main/resources/application-prod.yml | 2 ++ .../src/main/resources/application-test.yml | 2 ++ .../src/main/resources/application.yml | 6 ++++++ common-config/src/main/resources/note.txt | 19 +++++++++++++++++++ 7 files changed, 42 insertions(+), 5 deletions(-) create mode 100644 common-config/src/main/resources/application-dev.yml create mode 100644 common-config/src/main/resources/application-prod.yml create mode 100644 common-config/src/main/resources/application-test.yml diff --git a/common-config/src/main/java/com/pannk/demo/commonconfig/CommonConfigApplication.java b/common-config/src/main/java/com/pannk/demo/commonconfig/CommonConfigApplication.java index 822aed8..fc0b674 100644 --- a/common-config/src/main/java/com/pannk/demo/commonconfig/CommonConfigApplication.java +++ b/common-config/src/main/java/com/pannk/demo/commonconfig/CommonConfigApplication.java @@ -25,6 +25,8 @@ package com.pannk.demo.commonconfig; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.ConfigurableApplicationContext; +import org.springframework.core.env.ConfigurableEnvironment; /** * @author:wolf @@ -34,10 +36,10 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; public class CommonConfigApplication { public static void main(String[] args) { -// SpringApplication springApplication = new SpringApplication(CommonConfigApplication.class); + SpringApplication springApplication = new SpringApplication(CommonConfigApplication.class); // //设置Banner模式为关闭,即不显示Banner内容 //// springApplication.setBannerMode(Banner.Mode.OFF); -// springApplication.run(args); - SpringApplication.run(CommonConfigApplication.class, args); + springApplication.setAdditionalProfiles("dev"); +// SpringApplication.run(CommonConfigApplication.class, args); } } diff --git a/common-config/src/main/java/com/pannk/demo/commonconfig/controller/IndexController.java b/common-config/src/main/java/com/pannk/demo/commonconfig/controller/IndexController.java index e7210a0..fb9021d 100644 --- a/common-config/src/main/java/com/pannk/demo/commonconfig/controller/IndexController.java +++ b/common-config/src/main/java/com/pannk/demo/commonconfig/controller/IndexController.java @@ -1,5 +1,6 @@ package com.pannk.demo.commonconfig.controller; +import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController; @@ -10,8 +11,11 @@ import org.springframework.web.bind.annotation.RestController; @RestController public class IndexController { + @Value("${test.data}") + private String testData; + @GetMapping("/hello/{name}") - public String hello(@PathVariable String name){ - return String.format("Hello,%s!\n",name); + public String hello(@PathVariable String name) { + return String.format("Hello,%s!Now we are in %s environment\n", name, testData); } } diff --git a/common-config/src/main/resources/application-dev.yml b/common-config/src/main/resources/application-dev.yml new file mode 100644 index 0000000..4ff4e78 --- /dev/null +++ b/common-config/src/main/resources/application-dev.yml @@ -0,0 +1,2 @@ +test: + data: development \ No newline at end of file diff --git a/common-config/src/main/resources/application-prod.yml b/common-config/src/main/resources/application-prod.yml new file mode 100644 index 0000000..0a000f3 --- /dev/null +++ b/common-config/src/main/resources/application-prod.yml @@ -0,0 +1,2 @@ +test: + data: product \ No newline at end of file diff --git a/common-config/src/main/resources/application-test.yml b/common-config/src/main/resources/application-test.yml new file mode 100644 index 0000000..2fde0c7 --- /dev/null +++ b/common-config/src/main/resources/application-test.yml @@ -0,0 +1,2 @@ +test: + data: test \ No newline at end of file diff --git a/common-config/src/main/resources/application.yml b/common-config/src/main/resources/application.yml index b01896b..70338c8 100644 --- a/common-config/src/main/resources/application.yml +++ b/common-config/src/main/resources/application.yml @@ -14,6 +14,12 @@ server: min-spare-threads: 100 # 最小线程数 connection-timeout: 30000 # 超时时间 #spring: +# profiles: +# include: proddb prodmq +# active: prod +# - prodb +# - promq +#spring: # application: # name: commonConfig # main: diff --git a/common-config/src/main/resources/note.txt b/common-config/src/main/resources/note.txt index 8a80855..158da39 100644 --- a/common-config/src/main/resources/note.txt +++ b/common-config/src/main/resources/note.txt @@ -1,3 +1,22 @@ 一、内容容器 1、SpringBoot支持Tomcat(默认)、Jetty、Undertow等Servlet容器 2、通过添加相关依赖来替换容器 +二、profiles +1、什么是 Spring Profiles? + Spring Profiles 允许用户根据配置文件(dev,test,prod 等)来注册 bean。因此,当应用程序在开发中运行时,只有某些 bean 可以加载,而在 PRODUCTION中,某些其他 bean 可以加载。假设我们的要求是 Swagger 文档仅适用于 QA 环境,并且禁用所有其他文档。这可以使用配置文件来完成。Spring Boot 使得使用配置文件非常简单。 + 什么是Profiles? + Profile可以让 Spring 对不同的环境提供不同配置的功能,可以通过激活、指定参数等方式快速切换环境 + 在Spring Boot中多环境配置文件名需要使用application-{profile}.properties的格式,这里的**{profile}**对应的是你的环境标识。例如: + application-dev.properties — 这是开发环境 + application-prod.properties — 这是生产环境 + 当前目录的 “/config”的子目录下 + 当前目录下 + classpath根目录的“/config”包下 + classpath的根目录下 +2、@Component/@Configuration/@ConfigurationProperties可以通过添加@Profile来指定生效环境 +2、激活指定profile + spring.profiles.active application-{profile}.properties +3、激活profile的方式 + 3.1、spring.profiles.active指定 + 3.2、命令指定 java -jar xxxx.jar --spring.profiles.active=prod + 3.3、mvn spring-boot:run -Dspring-boot.run.profiles=dev \ No newline at end of file -- GitLab