品牌型号:台式主机
系统:Windows11
软件版本:Spring 5.3.7
我们在使用Spring Boot做开发的时候,经常会碰到多个类都需要共用同一个变量,或者是程序在运行的时候需要读取某个文件,但文件路径在不同环境下又有所区别。这时候,我们就要考虑如何设置全局变量,以及怎样正确使用相对路径。下面就给大家介绍一下Spring Boot怎么设置全局变量,Spring Boot怎么设置相对路径的相关内容。
一、Spring Boot怎么设置全局变量
在Spring Boot项目中,我们要设置全局变量有很多方式,如果是多个类需要共用的固定值,我们可以定义一个公共常量类;如果是数据库地址、文件目录等需要根据环境调整的参数,我们建议放在配置文件中统一管理会更合适。
我们就先来讲讲使用公共常量类,对于一个项目经常要用到的固定值,我们可以创建一个常量类,通过public static final定义常量,其他类直接通过类名访问。

使用的时候我们可以直接调用这个案例中的GlobalConstants.APP_NAME常量,不需要创建对象,这种方式适合存放固定不变的配置值,但不适合需要动态修改的参数。
如果变量需要在不同环境中使用不同的值,也就是刚刚我们说的需要动态修改的参数,那我们就可以在application.properties文件中进行配置,

然后我们如果要使用的话,就去代码中使用@Value注解读取配置,这样就能在Spring管理的Bean中使用配置值,而且修改配置时,我们不需要再去代码中查找和替换了,维护起来会更加方便些。

但是要注意@Value通常用于Spring容器管理的对象中,如果类是通过new关键字手动创建的,Spring不会自动为其注入配置值。
二、Spring Boot怎么设置相对路径
我们在Spring Boot项目中,设置文件路径需要结合实际场景来处理,例如项目需要读取本地文件、保存上传内容,或者是加载某个目录下的资源,都可能会用到相对路径。
如果我们只是想在配置文件中指定一个文件目录,可以在application.properties中进行设置,然后通过@Value这个注解来获取这个配置值。

但是,我们在图4这个案例中的./upload/并不是相对于项目源代码目录,而是相对于Java程序的当前工作目录。程序从不同目录启动,对应的文件位置会发生变化,所以如果我们要在Java代码中获取当前工作目录,可以使用System.getProperty("user.dir")方法。

user.dir通常表示的是启动Java程序时的工作目录,我们可以用它来拼接相对路径:

如果我们要读取src/main/resources目录下的配置文件或其他资源,不建议直接使用相对路径访问。项目打包成JAR后,资源通常位于JAR包内部,可以通过Spring的ClassPathResource或ResourceLoader加载。在实际开发中,我们需要区分文件是存放在项目外部还是打包在应用内部,防止项目部署后出现文件找不到的问题。
以上就是Spring Boot怎么设置全局变量,Spring Boot怎么设置相对路径的全部内容了。在Spring Boot项目中,对于固定不变的值,我们可以通过公共常量类统一管理,如果是需要根据运行环境调整的参数,可以放在application.properties配置文件中然后用@Value注解读取。我们在设置相对路径时,需要注意它通常是相对于程序的当前工作目录,而不是项目根目录,如果需要读取resources目录中的文件,建议使用Spring提供的资源加载方式。