SpringBoot——配置文件注入静态变量

通过配置文件,给静态变量赋值

一、配置文件(yaml)

xml:
  url:
    source-file: D:\AA\User.xml
    target-file: D:\BB
    listening-file: D:\AA
    listening-file-suffix: .xml
    listening-cycle: 5

二、配置类

@Configuration
public class YamlFromConstant {
    public static String SOURCE_FILE;
    public static String TARGET_FILE;
    public static String LISTENING_FILE;
    public static String LISTENING_FILE_SUFFIX;
    public static long LISTENING_CYCLE;

    @Value("${xml.url.listening-cycle}")
    public void setListeningCycle(long listeningCycle) {
        LISTENING_CYCLE = listeningCycle;
    }

    @Value("${xml.url.source-file}")
    public void setSourceFile(String sourceFile) {
        SOURCE_FILE = sourceFile;
    }

    @Value("${xml.url.target-file}")
    public void setTargetFile(String targetFile) {
        TARGET_FILE = targetFile;
    }

    @Value("${xml.url.listening-file}")
    public void setListeningFile(String listeningFile) {
        LISTENING_FILE = listeningFile;
    }

    @Value("${xml.url.listening-file-suffix}")
    public void setListeningFileSuffix(String listeningFileSuffix) {
        LISTENING_FILE_SUFFIX = listeningFileSuffix;
    }

}

这里要记住,属性是静态的,但是setter不是。

三、测试类

这里使用的是SpringBoot,需要组件

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>

测试类使用如下

import com.hello.HelloMainApplication;
import com.hello.util.YamlFromConstant;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest(classes = {HelloMainApplication.class})
public class TestHello {
    @Test
    public void test02() {
        System.out.println(YamlFromConstant.SOURCE_FILE);
        System.out.println(YamlFromConstant.TARGET_FILE);
        System.out.println(YamlFromConstant.LISTENING_FILE);
        System.out.println(YamlFromConstant.LISTENING_FILE_SUFFIX);
        System.out.println(YamlFromConstant.LISTENING_CYCLE);
    }
}

运行结果:


  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.2.1.RELEASE)

2020-01-19 21:59:28.241  INFO 20956 --- [           main] TestHello                                :  ··· ···
2020-01-19 21:59:28.242  INFO 20956 --- [           main] TestHello                                :  ··· ···
2020-01-19 21:59:29.303  INFO 20956 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  :  ··· ···
2020-01-19 21:59:29.533  INFO 20956 --- [           main] TestHello                                :  ··· ···
D:\AA\User.xml
D:\BB
D:\AA
.xml
5
2020-01-19 21:59:29.696  INFO 20956 --- [extShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor  :  ··· ···

我们发现启动了SpringBoot,原因是注解@SpringBootTest(classes = {HelloMainApplication.class}) 我们的运行器使用的是Spring的环境,启动器使用的是HelloMainApplication.class
如果你使用的时候出现报错
java.lang.Exception: No runnable methods
请检测你的@Test 的报路径是否是org.junit.Test 如果使用的是 org.junit.jupiter.api.Test 就会报错, 前者一般配合@RunWith 使用,后者可以直接使用,因为我们要测试配置文件需要在spring下测试,所以使用前面的测试方式。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值