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

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

文章目录

      • 一、配置文件(yaml)
      • 二、配置类
      • 三、测试类

一、配置文件(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.bootgroupId>
    <artifactId>spring-boot-starter-testartifactId>
    <scope>testscope>
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下测试,所以使用前面的测试方式。

你可能感兴趣的:(配置文件,SpringBoot)