SpringBoot——多环境配置文件、自定义配置文件的创建

news/2025/2/26 7:25:56

文章目录:

1.多环境配置文件的创建

1.1 dev

1.2 product

1.3 ready

1.4 test

1.5 核心配置文件

1.6 控制器类

1.7 入口类

2.自定义配置文件的创建

2.1 @Value 

2.2 @ConfigurationProperties

2.2.1 自定义配置文件

2.2.2 自定义一个类,获取自定义配置文件中的属性值

2.2.3 控制器类

2.2.4 入口类


1.多环境配置文件的创建

在实际开发的过程中,我们的项目会经历很多的阶段(开发->测试->上线),每个阶段的配置也会不同,例如:端口、上下文根、数据库等,那么这个时候为了方便在不同的环境之间切换,SpringBoot 提供了多环境配置,具体步骤如下:👇👇👇

1.1 dev

#开发环境配置文件
server.port=8080
server.servlet.context-path=/dev

1.2 product

#生产环境配置文件
server.port=8083
server.servlet.context-path=/product

1.3 ready

#准生产环境配置文件
server.port=8082
server.servlet.context-path=/ready

1.4 test

#测试环境配置文件
server.port=8081
server.servlet.context-path=/test

1.5 核心配置文件

#springboot核心配置文件
spring.profiles.active=test

1.6 控制器类

package com.songzihao.springboot.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 *
 */
@Controller
public class IndexController {

    @RequestMapping(value = "/say")
    @ResponseBody
    public String say() {
        return "Hello springboot multi-environments";
    }
}

1.7 入口类

package com.songzihao.springboot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}

在springboot核心配置文件中,使用 spring.profiles.active=XXX,就可以指定其中的某一个配置文件。

spring.profiles.active=dev  :👇👇👇

spring.profiles.active=test  :👇👇👇


2.自定义配置文件的创建

在 SpringBoot 的核心配置文件中,除了使用内置的配置项之外,我们还可以在自定义配置,然后采用如下注解去读取配置的属性值。

2.1 @Value 

在核心配置文件 applicatin.properties 中,添加两个自定义配置项 school.name 和website。在 IDEA 中可以看到这两个属性不能被 SpringBoot 识别,背景是桔色的 。

在核心配置文件 applicatin.yml 中,添加两个自定义配置项 school.name 和website。

测试代码如下:👇👇👇

2.2 @ConfigurationProperties

2.2.1 自定义配置文件

#设置内嵌Tomcat端口号
server.port=8080
#设置上下文根
server.servlet.context-path=/

first.name=tencent
first.website=https://www.tencent.com

second.name=baidu
second.website=https://www.baidu.com

2.2.2 自定义一个类,获取自定义配置文件中的属性值

 @ConfigurationProperties(prefix = "first") 这个注解,相当于获取到属性的前缀名,first.name、first.website。

package com.songzihao.springboot.config;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
 *
 */
@Component
@ConfigurationProperties(prefix = "first")
public class First {

    private String name;
    private String website;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getWebsite() {
        return website;
    }

    public void setWebsite(String website) {
        this.website = website;
    }
}

2.2.3 控制器类

package com.songzihao.springboot.controller;

import com.songzihao.springboot.config.First;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 *
 */
@Controller
public class IndexController {

    @Autowired
    private First first;

    @RequestMapping(value = "/say")
    @ResponseBody
    public String say() {
        return "first.name===" + first.getName() + " , first.website===" + first.getWebsite();
    }
}

2.2.4 入口类

package com.songzihao.springboot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}

 


http://www.niftyadmin.cn/n/711795.html

相关文章

table的构成

tr 元素定义表格行,th 元素定义表头,td 元素定义表格单元格。 cellpadding规定单元格边沿与其内容之间的空白。 cellspacing规定单元格之间的空白。 caption定义表格的标题 tbody定义表格的主体 thead定义表格的的页眉 tfoot定义表格的的页脚 colspan是表…

自定义View-仿虎扑直播比赛界面的打赏按钮

作为一个资深篮球爱好者,我经常会用虎扑app看比赛直播,后来注意到文字直播界面右下角加了两个按钮,可以在直播过程中送虎扑币,为自己支持的球队加油,具体的效果如下图所示: 我个人觉得挺好玩的,…

java 组合框输入_java组合框赋值怎么实现?有哪些方式?

一个程序员最基本的要求和工作就是能够为各种数据库增删改查,这中间自然少不了赋值的过程,小伙伴们知道有哪些方式能为组合框赋值吗?下面这篇文章就一起看看吧。例:一个组合框ComboBox1,从工作表1中的A列中提取不重复数值赋以这个…

《算法设计与分析》一一1.1 RAM模型的引入

1.1 RAM模型的引入 1.1.1 计算的基本概念计算技术已经渗透到我们日常生活的方方面面,显著地改变了我们的生活。计算技术的广泛应用与巨大成功让我们不禁思考:“为什么计算机似乎无所不能。”例如,我们平时的工作、娱乐、交流都得益于计算机…

man命令 详解

1. man命令 1:用户命令(/bin, /usr/bin, /usr/local/bin) 2:系统调用 3:库用户 4:特殊文件(设备文件) 5:文…

java class 获得函数_java的Class类及getClass()函数

Java反射学习所谓反射,可以理解为在运行时期获取对象类型信息的操作。传统的编程方法要求程序员在编译阶段决定使用的类型,但是在反射的帮助下,编程人员可以动态获取这些信息,从而编写更加具有可移植性的代码。严格地说&#xff0…

第七章 高质量子程序

一、何为子程序?子程序是为实现某一特定目的而编写的方法或过程。二、为何写子程序?1、可以降低复杂度。如果面临一个复杂逻辑,通过子程序可以有效分解逻辑,比如将一些列操作封装起来,通过函数名来传递某种逻辑。2、提…

136. Single Number 亦或Xor原理

以前tao哥就讲过,想不到在Leetcode里面分类是一个Easy的问题。 另外Leetcode上只需要一个返回值,不需要main函数,跟平时刷的Oj系统还是不同的 public class Solution {public int singleNumber(int[] nums) {int ans 0; for(int e : nums) {…