springboot启动时读取配置文件并赋值

简介: springboot启动时读取配置文件并赋值

最近做的项目中,有一个步骤是要写一个用来进行和其他东西进行连接的对象。

这个连接对象用static修饰,并直接调用一个方法初始化。

public static THPLCLibrary THPLC = THPLCLibrary.instance(参数);

这样就可以在springboot启动的时候就给这个连接对象初始化了。

但是方法里面的参数还是想从配置文件读取的,不想写死。

但是单纯的使用@value注解并没有起作用,感觉是因为在springboot启动时,初始化静态变量在加载配置文件之前,所以没有获取到配置文件中的内容。

查了一番资料,发现可以这么做:


写一个配置类,使用@ConfigurationProperties注解,将配置文件里的内容作为静态属性。在下面只写set方法,并使用@value注解。

然后在springboot的启动类中添加

@EnableConfigurationProperties({配置类.class})

这个注解就可以了,示例代码如下:


配置文件 application.yml:

thplcconfig:
  TPath:
    F:\code\src\main\resources\aaa
  THPLCServerAddress:
    127.0.0.1
  THPLCServerPort:
    10000

配置类:

@Component
@ConfigurationProperties(prefix = "thplcconfig")
public class THPLCConfig {
    public static String THPLCServerAddress;
    public static Integer THPLCServerPort;
    public static String TPath;
    @Value("${thplcconfig.TPath}")
    public void setTPath(String TPath) {
        THPLCConfig.TPath = TPath;
    }
    @Value("${thplcconfig.THPLCServerAddress}")
    public  void setTHPLCServerAddress(String THPLCServerAddress) {
        THPLCConfig.THPLCServerAddress = THPLCServerAddress;
    }
//
    @Value("${thplcconfig.THPLCServerPort}")
    public  void setTHPLCServerPort(Integer THPLCServerPort) {
        THPLCConfig.THPLCServerPort = THPLCServerPort;
    }
}

启动类:

@EnableConfigurationProperties({THPLCConfig.class})
public class AppRun {
    public static void main(String[] args) {
        SpringApplication.run(AppRun.class, args);
    }
public static THPLCLibrary THPLC = THPLCLibrary.instance(THPLCConfig.THPLCServerAddress,THPLCConfig.THPLCServerPort,THPLCConfig.TPath);

注意:

1,在@value注解中的配置要从最外到内写全,比如上面代码,ConfigurationProperties中写了prefix = “thplcconfig”,但是下面@value的时候,也要写成"${thplcconfig.TPath}" 而不是"${TPath}",写不全的话会报错取不到值。

2,下方的set方法不要使用static来修饰,快捷键生成的set方法里面是带static的,那样会取不到值。


目录
相关文章
|
Java
springboot启动时执行
springboot启动时执行
61 0
|
5月前
|
XML Java 关系型数据库
Springboot启动时报错Property ‘mapperLocations‘ was not specified.
Springboot启动时报错Property ‘mapperLocations‘ was not specified.
178 2
|
6月前
|
Java 测试技术 数据库
SpringBoot启动时设置不加载数据库
SpringBoot启动时设置不加载数据库
368 0
|
6月前
|
存储 Java API
你了解SpringBoot启动时API相关信息是用什么数据结构存储的吗?(上篇)
你了解SpringBoot启动时API相关信息是用什么数据结构存储的吗?(上篇)
65 0
|
6月前
|
XML Java 数据格式
SpringBoot中yml与properties配置文件及bean取值赋值
SpringBoot中yml与properties配置文件及bean取值赋值
477 0
|
6月前
|
Java Linux Windows
windows解决SpringBoot启动时:APPLICATION FAILED TO START
windows解决SpringBoot启动时:APPLICATION FAILED TO START
287 0
如何修改springboot项目启动时的默认图标?
如何修改springboot项目启动时的默认图标?
109 0
如何修改springboot项目启动时的默认图标?
|
11月前
|
Java 容器
SpringBoot启动时都做了哪些事(三)?
SpringBoot启动时都做了哪些事(三)?
58 0
|
11月前
|
监控 安全 Java
SpringBoot启动时都做了哪些事(二)?
SpringBoot启动时都做了哪些事(二)?
71 0
|
11月前
|
Java
SpringBoot启动时都做了哪些事(一)?
SpringBoot启动时都做了哪些事(一)?
49 0