通过配置文件,给静态变量赋值
一、配置文件(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下测试,所以使用前面的测试方式。