SpringBoot配置文件application.properties的理解

news/2025/3/14 1:44:55/

一、存放位置分类

1.当前项目根目录下的config目录下

2.当前项目的根目录下

3.resources目录下的config目录下

4.resources目录下

按照这上面的顺序,4个配置文件的优先级依次降低。

 我们在项目里面4个位置分别设置了各种的application.properties文件。每个文件都设置了各种的端口号,我们启动项目看到我们当前使用的端口号是优先级最高的项目根目录下config里面的配置。

 我们删除掉项目根目录下的config目录,现在项目使用的端口是项目根目录下的application.properties。

 二、自定义存放位置

如果我们不在这4个位置也想加载我们的配置文件的话,我们可以在resources目录下创建一个新目录命名为myconfig,目录下存放一个application.properties文件。我们可以在打包成jar的情况下在启动命令中加入配置文件的参数,就可以启动自定义的配置。

 java -jar xx.jar --spring.config.location=classpath:/myconfig/

三、自定义文件名

我们的application.properties文件名称也可以修改,比如修改成app.properties。我们可以在打成jar包的情况下在启动命令下加入配置文件名的参数,就可以使用自定义配置文件名。

 

java -jar SpringBootDemo-0.0.1-SNAPSHOT.jar --spring.config.name=app

我们看到现在项目使用的端口是app.properties文件下的8081端口了。 

四、属性注入

我们在application.properties文件中定义属性:

student.name=zhangsan
student.age=20

我们通过@Value注解把这些属性注入到我们的Student对象中:

示例代码如下:

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;/*** @author qinxun* @date 2023-06-15* @Descripion: 学生实体类*/
@Component
public class Student {@Value("${student.name}")private String name;@Value("${student.age}")private Integer age;@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", age=" + age +'}';}
}

测试:

import com.example.springbootdemo.bean.Student;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;@SpringBootTest
class SpringBootDemoApplicationTests {@Autowiredprivate Student student;@Testvoid contextLoads() {// 输出 Student{name='zhangsan', age=20}System.out.println(student);}}

五、类型安全的属性注入

示例代码如下:

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;/*** @author qinxun* @date 2023-06-15* @Descripion: 学生实体类*/
@Component
@ConfigurationProperties(prefix = "student")
public class Student {private String name;private Integer age;public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", age=" + age +'}';}
}

这里我们主要引入@ConfigurationProperties(prefix="student")注解,并且配置了属性的前缀,此时自动将Spring容器中对应的数据注入到对象对应的属性中,不用通过@Value注解一个个注入。

配置文件:

student.name=lisi
student.age=20

测试: 

import com.example.springbootdemo.bean.Student;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;@SpringBootTest
class SpringBootDemoApplicationTests {@Autowiredprivate Student student;@Testvoid contextLoads() {// 输出 Student{name='lisi', age=20}System.out.println(student);}}


http://www.ppmy.cn/news/401553.html

相关文章

前端 sentry 接入钉钉机器人

sentry 接入钉钉机器人 打开钉钉,添加机器人 此时会得到Webhook地址,记录一下,以后会用到 sentry 端设置 看看这里有木有钉钉插件,有的话开启插件,并配置这里我说一下没有的情况下,我们何如设置 这里需要填写webhook url 这个的url 需要是一个公网的地址,不可以是本地…

ant design vue中 使用a-select ,placeholder设置无效的解决办法

ant desiant design vue中 使用a-select ,placeholder设置无效的解决办法

三星一季度液晶电视面板购买力仍然排名第一,TCL和海信采购量份额持续稳健提升 | 美通社头条...

美通社消息:Omdia 的《电视显示面板与 OEM 情报服务》显示,来自中国顶级电视制造商的竞争正在加剧,TCL 和海信分别为世界排名第二和第三的电视面板采购商,在 2023 年第一季度的液晶电视面板的购买力增长至 24%市场份额&#xff0c…

多线程:线程休眠

线程休眠 sleep(时间)指定当前线程阻塞的毫秒数sleep存在异常interruptedExceptionsleep时间达到后线程进入就绪状态sleep可以模拟网络延时,倒计时等每个对象都有一个锁,sleep不会释放锁模拟延时: package exception.Demo03; //…

ADG-rac备库的问题处理

第一次配置rac to rac的的adg,ADG过程就不叙述了,备库同步完成后,使用srvctl加入集群时未报错,但是使用crsctl status res -t查看状态时,发现了问题,如下图 ASM1:/home/gridhydb1> crsctl status res -…

日撸java三百行day63-65

文章目录 说明1. Day63-65 AdaBoosting算法1 AdaBoostin举例1.1数据样本1.2 举例过程 2. 理论知识3. 总结 2. 代码理解1. WeightedInstances类2. 选择基分类器并进行训练(树桩分类器)3. 计算误差率和误差系数(树桩分类器)4. 计算精…

vb+access电脑销售系统的设计与实现

前 言 本文论述了销售管理系统的开发过程,它包括了软件的开发环境,开发工具以及相关技术、系统分析、系统设计、实现等内容。 本系统能为企业繁重的工作带来极大的方便,提高了工作效率及工作准确性,能准确无误地查找货物的综合信息,为企业减少了许多工作细节。 为了使此…

在 Blender、ZBrush 和 Substance 3D Painter 中创建幻想角色

今天瑞云渲染小编给大家带来一篇关于Obafunso Dorgu 作者Serenity 项目背后的工作流程,告诉我们这些衣服是如何在 Marvelous Designer 中制作的,并提到了设置逼真的头发的重要事项。 介绍 大家好,我叫Obafunso Dorgu,我是一名自…