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

1  多环境配置文件

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

dev

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

product

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

 ready

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

test

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

核心配置文件

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

控制器类

import com.abc.springboot.web.SpringBootController
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";
    }
}

入口类

 import com.abc.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);
    }
 
}

结果截图

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。

server:
  port: 9090
  servlet:
    context-path: /

school:
  name: ssm
websit: http://www.baidu.com

测试代码

package com.liuhaiyang.springboot.controller;

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

@Controller
public class OneController {
    @Value("${schools.name}")
    public String schoolName;

    @Value("${websit}")
    private String websit;

    @RequestMapping("one")
    @ResponseBody
    public String onetest(){
        return "hello"+schoolName+": "+websit;
    }
}

2.2 @ConfigurationProperties

自定义配置文件

#设置内嵌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

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

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
 
/**
 *
 */
@Component
@ConfigurationProperties(prefix = "first")  //@ConfigurationProperties(prefix = "first") 这个注解,相当于获取到属性的前缀名,first.name、first.website。

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;
    }
}

控制器类

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();
    }
}

入口类

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);
    }
 
}

结果截图

 

### Linux环境下Spring Boot项目外部配置文件设置指南 #### 一、概述 在Linux环境中部署Spring Boot应用程序时,可以通过种方法来管理外部化配置。这些方法允许开发者根据不同的运行环境灵活调整应用的行为而无需修改源码。 #### 二、使用命令行参数传递属性 当启动Java进程时可以直接附加`--key=value`形式的参数给JVM,这样做的好处是可以快速测试某些特定场景下的配置效果而不必更改任何持久化的配置文件[^2]。 例如: ```bash java -jar myapp.jar --server.port=8081 ``` #### 三、利用环境变量定义配置项 对于生产级别的部署来说,推荐采用环境变量的方式来进行配置管理。这不仅能够简化容器化工具(如Docker)中的集成工作,而且有助于提高安全性并便于实现自动化运维操作。只需将所需键值对添加到系统的环境变量列表里即可生效。 比如,在shell脚本中设置端口号: ```bash export SERVER_PORT=9090 java -jar $HOME/myapp.jar ``` 此时程序会自动读取名为`SERVER_PORT`的环境变量作为服务器监听地址的一部分。 #### 四、通过配置文件覆盖默认设定 除了上述两种即时生效的方法外,还可以创建单独的应用程序专属`.properties`或`.yml`格式的文本文件放置于合适位置让其优先级高于内置资源内的同名文件从而达到替换目的;另外也可以借助classpath路径之外的地方存储此类自定义配置文档并通过命令行选项告知具体所在之处。 假设有一个位于当前目录下叫做`application-prod.properties`的文件,则可以在启动命令后面加上如下所示的内容指明该文件的位置: ```bash java -jar myapp.jar --spring.config.location=./application-prod.properties ``` 如果希望同时加载个额外配置文件的话,那么只需要用逗号分隔开各个绝对/相对路径就可以了。 #### 五、基于Profile激活不同版本的配置集 为了更好地适应复杂的业务需求变化趋势,建议充分利用好Spring Profiles机制——即针对每一个具体的上下文环境准备一份独立完整的配置集合,并且能够在必要时刻轻松切换至另一套预设好的方案上去继续正常运作下去。 要启用某个profile对应的特殊处理逻辑很简单,只要确保设置了相应的系统属性或者环境变量就好啦! 以命令行为例: ```bash java -jar myapp.jar --spring.profiles.active=test ``` 以上就是关于如何在Linux平台上面合理运用各种手段完成对外部配置的支持介绍,希望能帮助大家顺利完成项目的上线准备工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值