IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 深入浅出 Spring Boot 多种设定档管里(Spring Profiles) -> 正文阅读

[Java知识库]深入浅出 Spring Boot 多种设定档管里(Spring Profiles)

在任何开发框架中,多环境管理通常是重要的核心功能,在 Spring 框架中也不例外,这里称为我们的Spring Profiles设置文件的功能说起来很简单,但实现起来却是一个功能。小心乱掉掉的文章我很愿意来讨论一番,很容易把话题搞清楚才不会管得了。

建立实例应用程序

  1. 使用 Spring Boot CLI 快速创建专案(也可以使用Spring Initializr建立)

    <span style="color:#444444"><span style="background-color:#f6f6f6">spring init <span style="color:#888888">--dependencies=web --groupId=com.duotify sbprofile1</span></span></span>

    使用 Visual Studio Code 开启该专案

    <span style="color:#444444"><span style="background-color:#f6f6f6"><span style="color:#333333"><strong>代码</strong></span>sbprofile1</span></span>
  2. 加入一个HomeController技术

    档名路径:src/main/java/com/duotify/sbprofile1/controllers/HomeController.java

    <span style="color:#444444"><span style="background-color:#f6f6f6"><span style="color:#333333"><strong>包</strong></span> <span style="color:#333333"><strong>com </strong></span><span style="color:#880000">.duotify </span><span style="color:#880000">.sbprofile1 </span><span style="color:#880000">.controllers</span>;
    
    <span style="color:#333333"><strong>导入</strong></span> <span style="color:#333333"><strong>org </strong></span><span style="color:#880000">.springframework </span><span style="color:#880000">.web </span><span style="color:#880000">.bind </span><span style="color:#880000">.annotation </span><span style="color:#880000">.GetMapping</span>;
    <span style="color:#333333"><strong>导入</strong></span> <span style="color:#333333"><strong>org </strong></span><span style="color:#880000">.springframework </span><span style="color:#880000">.web </span><span style="color:#880000">.bind </span><span style="color:#880000">.annotation </span><span style="color:#880000">.RestController</span>;
    
    @<span style="color:#333333"><strong>休息控制器</strong></span>
    公共类 HomeController {
        @GetMapping <span style="color:#333333"><strong>(</strong></span> "/")
        公共字符串主页(){
            <span style="color:#333333"><strong>返回</strong></span>“<span style="color:#333333"><strong>你好</strong></span> <span style="color:#333333"><strong>世界</strong></span>”;
        }
    }</span></span>
  3. 测试执行

    <span style="color:#444444"><span style="background-color:#f6f6f6">mvn clean spring-boot:<span style="color:#333333"><strong>运行</strong></span></span></span>

    补充说明:你可以在pom.xml<build>底下添加一个设置<defaultGoal>spring-boot:run</defaultGoal>,未来只要打就可以mvn自动启动 Spring Boot 执行喔!:+1:

    使用 cURL 测试

    <span style="color:#444444"><span style="background-color:#f6f6f6">$ curl<span style="color:#bc6060">本地主机:</span><span style="color:#880000">8080</span> 
    Hello World</span></span>

理解设定档(Profiles)的真正含意

春天的框架有一大堆抽象的概念,不好好花时间研究,会有很多恶魔般的细节无法理解。本文所提到的春天简介原本是一个很简单的概念,但是在写春天靴子的时候却是那样的有很多变化,可以让你脑袋打结什么。

我们先从最简单、最抽象的概念开始讲起。

配置文件(配置文件)常用这个名字( Profile?Name),名字代表应用程序配置。你可以通过一个简单的设置名称(Profile Name),快速的切换应用程序配置,就这么简单!

其中应用程序配置包含了两层含意:

  1. 未配置(Configuration)

    那个配置其实就是像这样的src/main/resources/application.properties属性定义档。

  2. 应用程序组件组合(组件组合)

    应用程序组件组件组合使用的程序里面有哪些「」要启用,你就可以在应用程序执行期间通过本次启动的参数,简单地决定使用什么配置文件来执行应用程序启动。

使用Profile来管里应用配置,最常见的例子,就是用在「多环境」部署上,比如你有公司内部的「测试环境」与客户提供的「正式环境」,通常有哪些设定都一样,但也有一样的地方。此时我们就可以通过多个Profile中的这些差异,分别来管理之后,我们只要知道设置名称(Profile Name)就可以切换不同的环境。

如何使用应用程序属性(Application Properties)

在了解如何管里多个设置文件之前,应该先了解应用程序属性(Application Properties)应该怎么用。

的体验步骤如下:

  1. 编辑src/main/resources/application.properties属性档

    加入一个my.profile属性值

    <span style="color:#444444"><span style="background-color:#f6f6f6">我的。<span style="color:#333333"><strong>个人资料</strong></span>=dev</span></span>
  2. 调整HomeController,添加一个私有字段(Private Field),并@Value通过添加来一个my.profile属性值

    档名路径:src/main/java/com/duotify/sbprofile1/controllers/HomeController.java

    <span style="color:#444444"><span style="background-color:#f6f6f6"><span style="color:#333333"><strong>包</strong></span> <span style="color:#333333"><strong>com </strong></span><span style="color:#880000">.duotify </span><span style="color:#880000">.sbprofile1 </span><span style="color:#880000">.controllers</span>;
    
    <span style="color:#333333"><strong>导入</strong></span> <span style="color:#333333"><strong>org </strong></span><span style="color:#880000">.springframework </span><span style="color:#880000">.beans </span><span style="color:#880000">.factory </span><span style="color:#880000">.annotation </span><span style="color:#880000">.Value</span>;
    <span style="color:#333333"><strong>导入</strong></span> <span style="color:#333333"><strong>org </strong></span><span style="color:#880000">.springframework </span><span style="color:#880000">.web </span><span style="color:#880000">.bind </span><span style="color:#880000">.annotation </span><span style="color:#880000">.GetMapping</span>;
    <span style="color:#333333"><strong>导入</strong></span> <span style="color:#333333"><strong>org </strong></span><span style="color:#880000">.springframework </span><span style="color:#880000">.web </span><span style="color:#880000">.bind </span><span style="color:#880000">.annotation </span><span style="color:#880000">.RestController</span>;
    
    @<span style="color:#333333"><strong>休息控制器</strong></span>
    公共类 HomeController {
    
        @Value <span style="color:#333333"><strong>(</strong></span> "${ <span style="color:#333333"><strong>my </strong></span><span style="color:#880000">.profile</span> }")
         <span style="color:#333333"><strong>private </strong></span><span style="color:#333333"><strong>String </strong></span><span style="color:#333333"><strong>myProfile</strong></span> ;  
    
        @GetMapping <span style="color:#333333"><strong>(</strong></span> "/")
        公共字符串主页(){
            <span style="color:#333333"><strong>返回</strong></span>“<span style="color:#333333"><strong>你好</strong></span> <span style="color:#333333"><strong>世界</strong></span>:”+<span style="color:#333333"><strong>这个</strong></span><span style="color:#880000">.myProfile</span>;
        }
    }</span></span>
  3. 测试执行

    <span style="color:#444444"><span style="background-color:#f6f6f6">mvn clean spring-boot:<span style="color:#333333"><strong>运行</strong></span></span></span>

    使用 cURL 测试

    <span style="color:#444444"><span style="background-color:#f6f6f6">$ curl<span style="color:#880000">本地主机:</span><span style="color:#880000">8080</span> 
    Hello <span style="color:#880000">World:</span>开发</span></span>

环境参数、环境变量如何变化、环境变量如何变化

当通过穿透属性的时候,加入属性,此时 Maven 需要一个pom.xml定义方法,我们希望将某个属性的值写入到“src/main/resources/application.properties属性文件中”。

的体验步骤如下:

  1. 编辑src/main/resources/application.properties属性档

    加入一个my.profile属性值

    <span style="color:#444444"><span style="background-color:#f6f6f6">我的.profile= <span style="color:#1f7199">@我的</span>。<span style="color:#bc6060">轮廓@</span></span></span>
  2. 调整pom.xml档,在<properties>加入一个<my.profile>属性

    <span style="color:#444444"><span style="background-color:#f6f6f6">< <span style="color:#333333"><strong>my.profile</strong></span> > dev2 </ <span style="color:#333333"><strong>my.profile</strong></span> ></span></span>
  3. 测试执行

    <span style="color:#444444"><span style="background-color:#f6f6f6">mvn clean spring-boot:<span style="color:#333333"><strong>运行</strong></span></span></span>

    使用 cURL 测试

    <span style="color:#444444"><span style="background-color:#f6f6f6">$ curl<span style="color:#880000">本地主机:</span><span style="color:#880000">8080</span> 
    Hello <span style="color:#880000">World:</span> dev2</span></span>

我们在特殊情况下,他会定义一个特殊的属性值,在特殊情况下,他会定义一个特殊的属性值,如果在编译时,Maven 会在编译时加入application.properties默认,那是可以让你在执行期间才通过方法优点(赋值)。@my.profile@

  • 直接从命令列参数参数

    <span style="color:#444444"><span style="background-color:#f6f6f6">mvn clean spring- boot <span style="color:#bc6060">t:run</span> -Dmy. <span style="color:#333333"><strong>配置文件</strong></span>=dev3</span></span>
    <span style="color:#444444"><span style="background-color:#f6f6f6">$ curl<span style="color:#880000">本地主机:</span><span style="color:#880000">8080</span> 
    Hello <span style="color:#880000">World:</span> dev3</span></span>
  • 直接值从环境变化数字属性

    下面是 Bash 设定环境变数的语法:

    <span style="color:#444444"><span style="background-color:#f6f6f6">my_profile =dev4 mvn clean spring-boot:run</span></span>
    <span style="color:#444444"><span style="background-color:#f6f6f6">$ curl<span style="color:#880000">本地主机:</span><span style="color:#880000">8080</span> 
    Hello <span style="color:#880000">World:</span> dev4</span></span>

    环境变数发生属性名称有小数点(.)的时候,记得转成底线(_)才可以。

  • 先有档次,通过调用参数java -jar时也可以使用

    <span style="color:#444444"><span style="background-color:#f6f6f6">mvn 清洁<span style="color:#397300">包</span></span></span>
    <span style="color:#444444"><span style="background-color:#f6f6f6"><span style="color:#333333"><strong>java</strong></span> -Dmy.profile=dev5 -jar 目标/ <span style="color:#880000">sbprofile1-0</span>。<span style="color:#880000">0</span> . <span style="color:#880000">1</span> -SNAPSHOT.jar</span></span>

    这个-Dmy.profile=dev5参数会使用JVM当系统参数。

    <span style="color:#444444"><span style="background-color:#f6f6f6">$ curl<span style="color:#880000">本地主机:</span><span style="color:#880000">8080</span> 
    Hello <span style="color:#880000">World:</span> dev5</span></span>

    请记住-Dmy.profile=dev5一定要设置在-jar前面!

  • 先决条件,通过环境变量java -jar时也可以通过

    <span style="color:#444444"><span style="background-color:#f6f6f6">mvn 清洁<span style="color:#397300">包</span></span></span>
    <span style="color:#444444"><span style="background-color:#f6f6f6">my_profile =dev6 java -jar 目标/sbprofile1- <span style="color:#880000">0.0</span>。<span style="color:#880000">1</span> -SNAPSHOT.jar</span></span>
    <span style="color:#444444"><span style="background-color:#f6f6f6">$ curl<span style="color:#880000">本地主机:</span><span style="color:#880000">8080</span> 
    Hello <span style="color:#880000">World:</span> dev6</span></span>

    请记住-Dmy.profile=dev5一定要设置在-jar前面!

  • 直接从.env定义的环境变量

    先在专案根目录加入一个.env档,内容如下:

    <span style="color:#444444"><span style="background-color:#f6f6f6">我的个人资料 = dev7</span></span>

    建立一个启动设置档( VSCode?.vscode/launch.json

    <span style="color:#444444"><span style="background-color:#f6f6f6">{
         “版本”:<span style="color:#880000">“0.2.0”</span>,
         “配置”:[
            {
                “type”:<span style="color:#880000">“java”</span>,
                 “name”:<span style="color:#880000">“Launch DemoApplication”</span>,
                 “request”:<span style="color:#880000">“launch”</span>,
                 “mainClass”:<span style="color:#880000">“com.duotify.sbprofile1.DemoApplication”</span>,
                 “projectName”:<span style="color:#880000">“sbprofile1”</span>,
                 “envFile” : <span style="color:#880000">"${workspaceFolder}/.env"</span>
            }
        ]
    }</span></span>

    这里的重点envFile设定。

    点击F5启动专案,就可以读取到设定值了!

    <span style="color:#444444"><span style="background-color:#f6f6f6">$ curl<span style="color:#880000">本地主机:</span><span style="color:#880000">8080</span> 
    Hello <span style="color:#880000">World:</span> dev7</span></span>

理解 Spring Profiles 设置文件的使用方式

在了解了 Properties 文件的使用与设置文件之后,终于可以进入到这里的重点内容,那是如何定义 Spring Profiles 文件的。

下面是体验步骤:

  1. 编辑src/main/resources/application.properties属性档

    加入一个spring.profiles.active属性值

    <span style="color:#444444"><span style="background-color:#f6f6f6">spring.profiles.active=@spring <span style="color:#1f7199">.profiles</span>。<span style="color:#bc6060">积极的@</span></span></span>

    这里将spring.profiles.active使用框架会使用的属性是 Spring 的一个名称,而正确的一个名称@spring.profiles.active@可以来自外部的属性。

  2. pom.xml调整的设定档,加入Maven的<profiles>设定

    <span style="color:#444444"><span style="background-color:#f6f6f6">< <span style="color:#333333"><strong>profiles</strong></span> > 
      < <span style="color:#333333"><strong>profile</strong></span> > 
        < <span style="color:#333333"><strong>id</strong></span> >默认</ <span style="color:#333333"><strong>id</strong></span> > 
        < <span style="color:#333333"><strong>activation</strong></span> > 
          < <span style="color:#333333"><strong>activeByDefault</strong></span> > true </ <span style="color:#333333"><strong>activeByDefault</strong></span> > 
        </ <span style="color:#333333"><strong>activation</strong></span> > 
        < <span style="color:#333333"><strong>properties</strong></span> > 
          < <span style="color:#333333"><strong>spring.profiles.active</strong></span> > default < <span style="color:#333333"><strong>/spring.profiles.active</strong></span> > 
        </<span style="color:#333333"><strong>属性</strong></span>> 
      </ <span style="color:#333333"><strong>profile</strong></span> > 
      < <span style="color:#333333"><strong>profile</strong></span> > 
        < <span style="color:#333333"><strong>id</strong></span> >开发8 </<span style="color:#333333"><strong>id</strong></span> > 
        <<span style="color:#333333"><strong>属性</strong></span>> 
          < <span style="color:#333333"><strong>spring.profiles.active</strong></span> > dev8 < <span style="color:#333333"><strong>/spring.profiles.active</strong></span> > 
        </ <span style="color:#333333"><strong>properties</strong></span> > 
      </ <span style="color:#333333"><strong>profile</strong></span> > 
    </ <span style="color:#333333"><strong>profiles</strong></span> ></span></span>

    属性比较不同的地方可以定义一个文件的属性,我们定义一个我们不同2的配置文件。?,这个属性是用来给 Spring 应用程序参考当前启用设置文件是谁。defaultdev8spring.profiles.active

    请记住:你在pom.xml定义的属性(<properties>)并且不会直接给 Java 程序参考,它们之间的关系是:

    <span style="color:#444444"><span style="background-color:#f6f6f6"><span style="color:#880000">Java文件原始文件属性/应用程序</span><span style="color:#880000">文件</span>属性/ml) <-- 属性属性外部属性。</span></span>
  3. 修改HomeController@Value标注,改注spring.profiles.active属性

    <span style="color:#444444"><span style="background-color:#f6f6f6"><span style="color:#333333"><strong>包</strong></span> <span style="color:#333333"><strong>com </strong></span><span style="color:#880000">.duotify </span><span style="color:#880000">.sbprofile1 </span><span style="color:#880000">.controllers</span>;
    
    <span style="color:#333333"><strong>导入</strong></span> <span style="color:#333333"><strong>org </strong></span><span style="color:#880000">.springframework </span><span style="color:#880000">.beans </span><span style="color:#880000">.factory </span><span style="color:#880000">.annotation </span><span style="color:#880000">.Value</span>;
    <span style="color:#333333"><strong>导入</strong></span> <span style="color:#333333"><strong>org </strong></span><span style="color:#880000">.springframework </span><span style="color:#880000">.web </span><span style="color:#880000">.bind </span><span style="color:#880000">.annotation </span><span style="color:#880000">.GetMapping</span>;
    <span style="color:#333333"><strong>导入</strong></span> <span style="color:#333333"><strong>org </strong></span><span style="color:#880000">.springframework </span><span style="color:#880000">.web </span><span style="color:#880000">.bind </span><span style="color:#880000">.annotation </span><span style="color:#880000">.RestController</span>;
    
    @<span style="color:#333333"><strong>休息控制器</strong></span>
    公共类 HomeController {
    
        @Value ( "${ <span style="color:#333333"><strong>spring </strong></span><span style="color:#880000">.profiles </span><span style="color:#333333"><strong>.active</strong></span> }")
         <span style="color:#333333"><strong>private </strong></span><span style="color:#333333"><strong>String </strong></span><span style="color:#880000">myProfile </span><span style="color:#333333"><strong>;</strong></span>  
    
        @GetMapping <span style="color:#333333"><strong>(</strong></span> "/")
        公共字符串主页(){
            <span style="color:#333333"><strong>返回</strong></span>“<span style="color:#333333"><strong>你好</strong></span> <span style="color:#333333"><strong>世界</strong></span>:”+<span style="color:#333333"><strong>这个</strong></span><span style="color:#880000">.myProfile</span>;
        }
    }</span></span>
  4. 测试执行

    请记住我们现在有两个设置档,分别是default和这两个设置档dev8。当我们用mvn spring-boot:run启动应用程序的时候,就可以用-P外加一个ProfileName就可以启用设置档了。

    <span style="color:#444444"><span style="background-color:#f6f6f6">mvn clean spring-boot:<span style="color:#333333"><strong>运行</strong></span>-Pdev8</span></span>

    注意:这里的-P必须P接上一个元素的大值写,而且后面的名称是pom.xml表格<id>

    使用 cURL 测试

    <span style="color:#444444"><span style="background-color:#f6f6f6">$ curl<span style="color:#880000">本地主机:</span><span style="color:#880000">8080</span> 
    Hello <span style="color:#880000">World:</span> dev8</span></span>

    尝试设定一个名称:不存在的?dev9设定档是你自己的预设

    <span style="color:#444444"><span style="background-color:#f6f6f6">mvn clean spring-boot:<span style="color:#333333"><strong>运行</strong></span>-Pdev9</span></span>
    <span style="color:#444444"><span style="background-color:#f6f6f6">$ curl <span style="color:#880000">localhost:</span><span style="color:#880000">8080</span> 
    Hello <span style="color:#880000">World:</span> <span style="color:#333333"><strong>默认</strong></span></span></span>

注意:是可以的,-P可以用两个图标来启用。例如,您可以启用以下命令来测试mvn help:active-profiles -Pdev,prod

通过 Spring Profiles 切换不同的应用程序属性文件

使用 Spring 框架的 Profiles 功能,还有另外一个好处,那是你可以不用把属性设置在 Maven 的pom.xml文件里面,可以通过自定义的习惯,将应用程序设置在不同的文件.properties中。以下文件名称规格请见注解说明:

<span style="color:#444444"><span style="background-color:#f6f6f6"><span style="color:#888888"># 这是预设的这个应用程序属性档,无论启用哪个设置,载入档案中的属性</span>
应用程序属性

<span style="color:#888888">#这是特定设置文件会套用的应用程序文件,只有启用的属性文件会载入文件中的属性</span>
application-{ProfileName}.properties</span></span>

请注意:在application文件名后面要接上-(破折号)符号,然后接上你的ProfileName正确的命名规则。

就来一下多设置文件我们的套用体验情况

  1. 我们再加入一个dev9设定档到pom.xml档中

    <span style="color:#444444"><span style="background-color:#f6f6f6">< <span style="color:#333333"><strong>profiles</strong></span> > 
      < <span style="color:#333333"><strong>profile</strong></span> > 
        < <span style="color:#333333"><strong>id</strong></span> >默认</ <span style="color:#333333"><strong>id</strong></span> > 
        < <span style="color:#333333"><strong>activation</strong></span> > 
          < <span style="color:#333333"><strong>activeByDefault</strong></span> > true </ <span style="color:#333333"><strong>activeByDefault</strong></span> > 
        </ <span style="color:#333333"><strong>activation</strong></span> > 
        < <span style="color:#333333"><strong>properties</strong></span> > 
          < <span style="color:#333333"><strong>spring.profiles.active</strong></span> > default < <span style="color:#333333"><strong>/spring.profiles.active</strong></span> > 
        </<span style="color:#333333"><strong>属性</strong></span>> 
      </ <span style="color:#333333"><strong>profile</strong></span> > 
      < <span style="color:#333333"><strong>profile</strong></span> > 
        < <span style="color:#333333"><strong>id</strong></span> >开发8 </<span style="color:#333333"><strong>id</strong></span> > 
        < <span style="color:#333333"><strong>properties</strong></span> > 
          < <span style="color:#333333"><strong>spring.profiles.active</strong></span> > dev8 < <span style="color:#333333"><strong>/spring.profiles.active</strong></span> > 
        </ <span style="color:#333333"><strong>properties</strong></span> > 
      </ <span style="color:#333333"><strong>profile</strong></span> > 
      < <span style="color:#333333"><strong>profile</strong></span> > 
        < <span style="color:#333333"><strong>id</strong></span> > dev9 </ <span style="color:#333333"><strong>id</strong></span> > 
        < <span style="color:#333333"><strong>properties</strong></span> > 
          < <span style="color:#333333"><strong>spring.profiles.active</strong></span> > dev9 < <span style="color:#333333"><strong>/spring.profiles.active</strong></span> > 
        </ <span style="color:#333333"><strong>properties</strong></span> > 
      </ <span style="color:#333333"><strong>profile</strong></span> > 
    </ <span style="color:#333333"><strong>profiles</strong></span> ></span></span>
  2. 除了application.properties,我们另外建立两个应用程序属性文件

    档案1:(src/main/resources/application.properties加入一个my.name属性)

    <span style="color:#444444"><span style="background-color:#f6f6f6">我的.profile= <span style="color:#1f7199">@我的</span>。<span style="color:#bc6060">profile@</span> 
    spring.profiles.active= @ <span style="color:#1f7199">spring.profiles</span>。<span style="color:#bc6060">active@my.name=Will</span> 
    _</span></span>

    档案2:(src/main/resources/application-dev8.properties加入一个my.name属性)

    <span style="color:#444444"><span style="background-color:#f6f6f6">我的。<span style="color:#333333"><strong>名字</strong></span>=约翰</span></span>

    档案3:(src/main/resources/application-dev9.properties空白内容)

  3. 修改HomeController@Value标注,改注spring.profiles.active属性

    <span style="color:#444444"><span style="background-color:#f6f6f6"><span style="color:#333333"><strong>包</strong></span>com.duotify.sbprofile1.controllers;
    
    <span style="color:#333333"><strong>导入</strong></span>org.springframework.beans.factory。<span style="color:#333333"><strong>注释</strong></span>.Value;
    <span style="color:#333333"><strong>导入</strong></span>org.springframework.web.bind。<span style="color:#333333"><strong>注释</strong></span>.GetMapping;
    <span style="color:#333333"><strong>导入</strong></span>org.springframework.web.bind。<span style="color:#333333"><strong>注释</strong></span>.RestController;
    
    <span style="color:#1f7199">@RestController</span>
    <span style="color:#333333"><strong>公共</strong></span> <span style="color:#333333"><strong>类</strong></span> <span style="color:#880000"><strong>HomeController</strong></span>  {
    
        <span style="color:#1f7199">@Value( <span style="color:#4d99bf">" <span style="color:#444444">${spring.profiles.active}</span> "</span> )</span>
        <span style="color:#333333"><strong>私有</strong></span>字符串 myProfile;
    
        <span style="color:#1f7199">@Value( <span style="color:#4d99bf">" <span style="color:#444444">${my.name}</span> "</span> )</span>
        <span style="color:#333333"><strong>私有</strong></span>字符串 myName;
    
        <span style="color:#1f7199">@GetMapping( <span style="color:#4d99bf">"/"</span> ) </span>
        <span style="color:#333333"><strong>public</strong></span> String home() {
             <span style="color:#333333"><strong>return </strong></span> <span style="color:#880000">"Hello World:"</span> + <span style="color:#333333"><strong>this</strong></span> .myName;
        }
    }</span></span>
  4. 测试执行

    请记住我们现在的三个3设定档,分别是defaultdev8dev9这。

    先尝试不指定个人资料的情况

    <span style="color:#444444"><span style="background-color:#f6f6f6">mvn clean spring-boot:<span style="color:#333333"><strong>运行</strong></span></span></span>
    <span style="color:#444444"><span style="background-color:#f6f6f6">$ curl <span style="color:#880000">localhost: </span><span style="color:#880000">8080</span> 
    Hello <span style="color:#880000">World:</span>将</span></span>

    重新尝试指定个人资料dev8的情况

    <span style="color:#444444"><span style="background-color:#f6f6f6">mvn clean spring-boot:<span style="color:#333333"><strong>运行</strong></span>-Pdev8</span></span>
    <span style="color:#444444"><span style="background-color:#f6f6f6">$ curl <span style="color:#880000">localhost:</span><span style="color:#880000">8080</span> 
    Hello <span style="color:#880000">World:</span>约翰</span></span>

    最后尝试指定个人资料dev9的情况

    <span style="color:#444444"><span style="background-color:#f6f6f6">mvn clean spring-boot:<span style="color:#333333"><strong>运行</strong></span>-Pdev9</span></span>
    <span style="color:#444444"><span style="background-color:#f6f6f6">$ curl <span style="color:#880000">localhost: </span><span style="color:#880000">8080</span> 
    Hello <span style="color:#880000">World:</span>将</span></span>

透过 Spring Profiles 载入不同的相依套件

通过例如 Spring Profile 的不同设置方式进行设置,除了可以设置“属性”之外,重新设置(Profile)来加载的相依套件<dependencies>与不同的版本(测试新旧版本)相同版本),不同的介面资料面但不同(不同模式库驱动)之类的,这点不同的套件很赞!:+1:

  • 下面是不同版本的不同设置示例:

    <span style="color:#444444"><span style="background-color:#f6f6f6">< <span style="color:#333333"><strong>profile</strong></span> > 
      < <span style="color:#333333"><strong>id</strong></span> > dev8 </ <span style="color:#333333"><strong>id</strong></span> > 
      < <span style="color:#333333"><strong>dependencies</strong></span> > 
        < <span style="color:#333333"><strong>dependency</strong></span> > 
          < <span style="color:#333333"><strong>groupId</strong></span> > org.springframework.boot </ <span style="color:#333333"><strong>groupId</strong></span> > 
          < <span style="color:#333333"><strong>artifactId</strong></span> > spring-boot-starter-web </ <span style="color:#333333"><strong>artifactId</strong></span> > 
          < <span style="color:#333333"><strong>version</strong></span> > 2.7.0 < /<span style="color:#333333"><strong>版本</strong></span>> 
        </<span style="color:#333333"><strong>依赖</strong></span>> 
      </<span style="color:#333333"><strong>依赖</strong></span>> 
      <<span style="color:#333333"><strong>属性</strong></span>> 
        < <span style="color:#333333"><strong>spring.profile.active</strong></span>> dev8 < <span style="color:#333333"><strong>/spring.profiles.active</strong></span> > 
      </<span style="color:#333333"><strong>属性</strong></span>> 
    </ <span style="color:#333333"><strong>profile</strong></span> ></span></span>

    如果想看套用不同的 Profile 之后的相依套件,可以执行以下命令:

    <span style="color:#444444"><span style="background-color:#f6f6f6"><span style="color:#333333"><strong>mvn</strong></span>依赖:tree -Pdev8</span></span>
  • 下面是不同介面不同套件的设定示例:

    <span style="color:#444444"><span style="background-color:#f6f6f6">< <span style="color:#333333"><strong>profiles</strong></span> > 
      < <span style="color:#333333"><strong>profile</strong></span> > 
        < <span style="color:#333333"><strong>id</strong></span> >本地</ <span style="color:#333333"><strong>id</strong></span> > 
        < <span style="color:#333333"><strong>dependencies</strong></span> > 
          < <span style="color:#333333"><strong>dependency</strong></span> > 
            < <span style="color:#333333"><strong>groupId</strong></span> > org.hsqldb </ <span style="color:#333333"><strong>groupId</strong></span> > 
            < <span style="color:#333333"><strong>artifactId</strong></span> > hsqldb </ <span style="color:#333333"><strong>artifactId</strong></span> > 
            < <span style="color:#333333"><strong>version</strong></span> > 2.3.3 </ <span style="color:#333333"><strong>version</strong></span> > 
            < <span style="color:#333333"><strong>classifier</strong></span> > jdk5 </<span style="color:#333333"><strong>分类器</strong></span>> 
          </<span style="color:#333333"><strong>依赖</strong></span>> 
        </<span style="color:#333333"><strong>依赖</strong></span>项> 
        <<span style="color:#333333"><strong>属性</strong></span>> 
          < <span style="color:#333333"><strong>jdbc.url</strong></span> > jdbc:hsqldb:file:databaseName < <span style="color:#333333"><strong>/jdbc.url</strong></span> > 
          < <span style="color:#333333"><strong>jdbc.username</strong></span> > a < <span style="color:#333333"><strong>/jdbc.username</strong></span> > 
          < <span style="color:#333333"><strong>jdbc.password</strong></span> > </ <span style="color:#333333"><strong>jdbc.password</strong></span> > 
          < <span style="color:#333333"><strong>jdbc.driver</strong></span> > org.hsqldb.jdbcDriver </ <span style="color:#333333"><strong>jdbc.driver</strong></span> > 
        </ <span style="color:#333333"><strong>properties</strong></span> > 
      </ <span style="color:#333333"><strong>profile</strong></span> > 
      < <span style="color:#333333"><strong>profile</strong></span> > 
        < <span style="color:#333333"><strong>id</strong></span> > MySQL </<span style="color:#333333"><strong>身份证</strong></span>>
        < <span style="color:#333333"><strong>dependencies</strong></span> > 
          < <span style="color:#333333"><strong>dependency</strong></span> > 
            < <span style="color:#333333"><strong>groupId</strong></span> > mysql </ <span style="color:#333333"><strong>groupId</strong></span> > 
            < <span style="color:#333333"><strong>artifactId</strong></span> > mysql-connector-java </ <span style="color:#333333"><strong>artifactId</strong></span> > 
            < <span style="color:#333333"><strong>version</strong></span> > 5.1.38 </ <span style="color:#333333"><strong>version</strong></span> > 
          </ <span style="color:#333333"><strong>dependency</strong></span> > 
        </ <span style="color:#333333"><strong>dependencies</strong></span> > 
        < <span style="color:#333333"><strong>properties</strong></span> > 
          < <span style="color:#333333"><strong>jdbc. url</strong></span> > jdbc:mysql://mysql.website.ac.uk:3306 </ <span style="color:#333333"><strong>jdbc.url</strong></span> > 
          < <span style="color:#333333"><strong>jdbc.username</strong></span> >用户< <span style="color:#333333"><strong>/jdbc.username</strong></span> > 
          < <span style="color:#333333"><strong>jdbc.password</strong></span> > 1234 < <span style="color:#333333"><strong>/jdbc.password</strong></span> > 
          < <span style="color:#333333"><strong>jdbc.driver</strong></span> > com.mysql.jdbc.Driver < <span style="color:#333333"><strong>/jdbc.driver</strong></span> > 
        </ <span style="color:#333333"><strong>properties</strong></span> > 
      </ <span style="color:#333333"><strong>profile</strong></span> > 
    </ <span style="color:#333333"><strong>profiles</strong></span> ></span></span>

透过 Spring Profiles 载入不同 Beans

在春天的框架下,所有用@Component标注的这些类别全部都被注册成豆类元素,其中当然也包含@Configuration标注的类别,因为标注都继承自@Component介面。

然而,你只要在上面额外@Profile套上类别的标签,就可以很简单地宣布春天要在特定的个人资料下载入,以下是使用示例:

  1. 建立一个UserService类别

    <span style="color:#444444"><span style="background-color:#f6f6f6"><span style="color:#333333"><strong>包</strong></span>com.duotify.sbprofile1.services;
    
    <span style="color:#333333"><strong>公共</strong></span> <span style="color:#333333"><strong>类</strong></span> <span style="color:#880000"><strong>UserService</strong></span>  {
         <span style="color:#333333"><strong>public</strong></span> UserService(String name) {
             <span style="color:#333333"><strong>this</strong></span> .name = name;
        }
        <span style="color:#333333"><strong>私有</strong></span>字符串名称;
        <span style="color:#333333"><strong>public</strong></span> String getName() {
            <span style="color:#333333"><strong>返回</strong></span>名称;
        }
    }</span></span>
  2. 建立一个UserServiceDev类别

    <span style="color:#444444"><span style="background-color:#f6f6f6"><span style="color:#333333"><strong>包</strong></span> <span style="color:#333333"><strong>com </strong></span><span style="color:#880000">.duotify </span><span style="color:#880000">.sbprofile1 </span><span style="color:#880000">.services</span>;
    
    <span style="color:#333333"><strong>导入</strong></span> <span style="color:#333333"><strong>org </strong></span><span style="color:#880000">.springframework </span><span style="color:#880000">.context </span><span style="color:#880000">.annotation </span><span style="color:#880000">.Bean</span>;
    <span style="color:#333333"><strong>导入</strong></span><span style="color:#333333"><strong>org </strong></span><span style="color:#880000">.springframework </span><span style="color:#880000">.context </span><span style="color:#880000">.annotation </span><span style="color:#880000">.Profile</span>;
    <span style="color:#333333"><strong>导入</strong></span><span style="color:#333333"><strong>org </strong></span><span style="color:#880000">.springframework </span><span style="color:#880000">.stereotype </span><span style="color:#880000">.Component</span>;  
    
    @<span style="color:#333333"><strong>组件</strong></span>
    @Profile( <span style="color:#880000">"dev"</span> )
    公共类 UserServiceDev {
        @<span style="color:#333333"><strong>豆</strong></span>
        公共用户服务 getUserService() {
            <span style="color:#333333"><strong>返回</strong></span> <span style="color:#333333"><strong>新的</strong></span> <span style="color:#333333"><strong>用户服务</strong></span>(“<span style="color:#333333"><strong>开发</strong></span>”);
        }
    }</span></span>

    这个UserServiceDev只有在dev启用设置档时才会被Spring执行。

  3. 建立一个UserServiceProd类别

    <span style="color:#444444"><span style="background-color:#f6f6f6"><span style="color:#333333"><strong>包</strong></span> <span style="color:#333333"><strong>com </strong></span><span style="color:#880000">.duotify </span><span style="color:#880000">.sbprofile1 </span><span style="color:#880000">.services</span>;
    
    <span style="color:#333333"><strong>导入</strong></span> <span style="color:#333333"><strong>org </strong></span><span style="color:#880000">.springframework </span><span style="color:#880000">.context </span><span style="color:#880000">.annotation </span><span style="color:#880000">.Bean</span>;
    <span style="color:#333333"><strong>导入</strong></span><span style="color:#333333"><strong>org </strong></span><span style="color:#880000">.springframework </span><span style="color:#880000">.context </span><span style="color:#880000">.annotation </span><span style="color:#880000">.Profile</span>;
    <span style="color:#333333"><strong>导入</strong></span><span style="color:#333333"><strong>org </strong></span><span style="color:#880000">.springframework </span><span style="color:#880000">.stereotype </span><span style="color:#880000">.Component</span>;  
    
    @<span style="color:#333333"><strong>组件</strong></span>
    @Profile( <span style="color:#880000">"!dev"</span> )
    公共类 UserServiceProd {
        @<span style="color:#333333"><strong>豆</strong></span>
        公共用户服务 getUserService() {
            <span style="color:#333333"><strong>返回</strong></span> <span style="color:#333333"><strong>新的</strong></span> <span style="color:#333333"><strong>用户服务</strong></span>(“<span style="color:#333333"><strong>产品</strong></span>”);
        }
    }</span></span>

    这个只有在启用UserServiceDevdev设置档时才会被 Spring 执行。

  4. 修改HomeController并通过「式」注入UserService服务

    <span style="color:#444444"><span style="background-color:#f6f6f6"><span style="color:#333333"><strong>包</strong></span>com.duotify.sbprofile1.controllers;
    
    <span style="color:#333333"><strong>导入</strong></span>org.springframework.beans.factory。<span style="color:#333333"><strong>注释</strong></span>.Value;
    <span style="color:#333333"><strong>导入</strong></span>org.springframework.web.bind。<span style="color:#333333"><strong>注释</strong></span>.GetMapping;
    <span style="color:#333333"><strong>导入</strong></span>org.springframework.web.bind。<span style="color:#333333"><strong>注释</strong></span>.RestController;
    
    <span style="color:#333333"><strong>导入</strong></span>com.duotify.sbprofile1.services.UserService;
    
    <span style="color:#1f7199">@RestController</span>
    <span style="color:#333333"><strong>公共</strong></span> <span style="color:#333333"><strong>类</strong></span> <span style="color:#880000"><strong>HomeController</strong></span>  {
    
        <span style="color:#1f7199">@Value( <span style="color:#4d99bf">" <span style="color:#444444">${spring.profiles.active}</span> "</span> )</span>
        <span style="color:#333333"><strong>私有</strong></span>字符串 myProfile;
    
        <span style="color:#1f7199">@Value( <span style="color:#4d99bf">" <span style="color:#444444">${my.name}</span> "</span> )</span>
        <span style="color:#333333"><strong>私有</strong></span>字符串 myName;
    
        <span style="color:#333333"><strong>私人</strong></span>用户服务 svc;
    
        <span style="color:#333333"><strong>公共</strong></span>HomeController(UserService svc) {
            <span style="color:#333333"><strong>这个</strong></span>.svc = svc;
        }
    
        <span style="color:#1f7199">@GetMapping( <span style="color:#4d99bf">"/"</span> ) </span>
        <span style="color:#333333"><strong>public</strong></span> String home() {
             <span style="color:#333333"><strong>return </strong></span> <span style="color:#880000">"Hello World:"</span> + <span style="color:#333333"><strong>this</strong></span> .svc.getName();
        }
    }</span></span>
  5. 修改pom.xml再加入两个<profile>定义

    <span style="color:#444444"><span style="background-color:#f6f6f6">< <span style="color:#333333"><strong>profile</strong></span> > 
      < <span style="color:#333333"><strong>id</strong></span> > dev </ <span style="color:#333333"><strong>id</strong></span> > 
      < <span style="color:#333333"><strong>properties</strong></span> > 
        < <span style="color:#333333"><strong>spring.profiles.active</strong></span> > dev < <span style="color:#333333"><strong>/spring.profiles.active</strong></span> > 
      </ <span style="color:#333333"><strong>properties</strong></span> > 
    </ <span style="color:#333333"><strong>profile</strong></span> > 
    < <span style="color:#333333"><strong>profile</strong></span> > 
      < <span style="color:#333333"><strong>id</strong></span> > prod </ <span style="color:#333333"><strong>id</strong></span> > 
      <<span style="color:#333333"><strong>属性</strong></span>> 
        < <span style="color:#333333"><strong>spring.profiles.active</strong></span> > prod </ <span style="color:#333333"><strong>spring.profiles.active</strong></span> > 
      </<span style="color:#333333"><strong>属性</strong></span>> 
    </<span style="color:#333333"><strong>简介</strong></span>></span></span>
  6. 测试执行

    请记住我们现在的身份设置文件5,分别是default,?dev8,?dev9,devprod这五个。

    尝试指定个人资料dev的情况

    <span style="color:#444444"><span style="background-color:#f6f6f6">mvn clean spring-boot:<span style="color:#333333"><strong>运行</strong></span>-Pdev</span></span>
    <span style="color:#444444"><span style="background-color:#f6f6f6">$ curl<span style="color:#880000">本地主机:</span><span style="color:#880000">8080</span> 
    Hello <span style="color:#880000">World:</span>开发</span></span>

    尝试指定个人资料prod的情况

    <span style="color:#444444"><span style="background-color:#f6f6f6">mvn clean spring-boot:<span style="color:#333333"><strong>运行</strong></span>-Pprod</span></span>
    <span style="color:#444444"><span style="background-color:#f6f6f6">$ curl <span style="color:#880000">localhost: </span><span style="color:#880000">8080</span> 
    Hello <span style="color:#880000">World:</span> Prod</span></span>

    ?

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-09-24 20:42:44  更:2022-09-24 20:43:20 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 8:43:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码