赞
踩
Spring Boot是一个用于快速开发的微服务框架。在开发Spring Boot应用时,我们通常需要配置一些外部参数,例如数据库连接信息、端口号等。Spring Boot提供了多种方式来加载这些配置文件参数。在本文中,我们将介绍如何在Spring Boot应用中加载配置文件参数,并且在静态方法中可以调用这些参数。
在application.properties文件中添加参数
myapp.apikey=abcd-12345678
或是在application.yml文件中添加参数
myapp:
apikey: abce-12345678
在Spring Boot中,加载配置文件中的参数有以下几种方法:
使用@Value
注解加载:
在需要加载配置文件中的参数的类或方法上,使用@Value
注解注入需要的配置参数。例如:
@Value("${myapp.apikey}")
private String apiKey;
这里通过使用${}
语法,注入了myapp.apikey
参数的值到apiKey
变量中,这个参数可以通过在application.properties
或application.yml
文件中定义。
使用Environment
接口加载:
在需要获取配置文件中的参数的类中,使用Environment
接口的方法获取需要的参数。例如:
@Autowired
private Environment env;
public void myMethod() {
String apiKey = env.getProperty("myapp.apikey");
}
这里通过@Autowired
注解把Environment
接口注入到类中,然后通过getProperty()
方法获取需要的参数。
使用@ConfigurationProperties
注解加载:
定义一个与配置文件对应的实体类,然后通过@ConfigurationProperties
注解注入该实体类即可。例如:
@Component
@ConfigurationProperties(prefix = "myapp")
public class MyProperties {
private String apikey;
// getter and setter
}
在MyProperties
类上,使用@ConfigurationProperties
注解指定了配置文件中的前缀为myapp
,然后在需要注入该类的位置使用@Autowired
注解即可。
package com.example.udpDemo.common.utils; import jakarta.annotation.PostConstruct; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; /** * @author wangdachuan * @version 1.0 * @date 2023/5/5 22:30 **/ @Component public class EnvironmentUtil { public static String appKey; @Value("${app.key}") private String tmpAppKey; /** * 初始化方法,使用@PostConstruct注解能够在对象通过@Component初始化后调用该方法 * ,将通过@Value加载的值赋值给静态变量 */ @PostConstruct private void init(){ appKey = tmpAppKey; } }
在上面的这个类中,通过几个注解将配置的参数进行读取并使用。
1.在类上使用@Component,是EnvironmentUtil会被自动实例化成一个Bean,并且通过DI注入到其他的Bean中。会在项目启动时加载该类。
2.在定义的私有变量tmpName等参数上通过@Value(“${}”)将配置文件中的参数加载到变量中。
3.在set方法上通过@PostConstruct注解,在对象被初始化之后,通过反射机制自动调用该方法。通过该方法将加载的参数赋值给静态变量。
package com.example.udpDemo.controller; import com.example.udpDemo.common.utils.EnvironmentUtil; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * @author wangdachuan * @version 1.0 * @date 2023/5/5 22:37 **/ @RestController @RequestMapping("/env") public class EnvironmentController { /** * 获取配置文件中的参数 * * @return {@link String} */ @GetMapping("/getAppKey") public String getAppKey(){ return EnvironmentUtil.appKey; } }
通过直接调用EnvironmentUtil的静态变量,我们就可以获取到配置文件中的参数。
git地址: https://gitee.com/wyc_01/netty-udp-demo.git
包路径: com/example/udpDemo/common/utils/EnvironmentUtil.java
在本文中,我们使用了@Component、@Value和@PostConstruct三个注解,将配置参数加载到静态变量中。虽然这种方法很方便,但我们也可以通过其他方式来实现配置参数的加载。欢迎大家留言讨论。
希望大家多多关注+点赞+收藏
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。