概述
首先,在resource目录下配置test.yml文件
A:
B: http://123.com?
C: username="lili"&password="123456"
D: username="lisa"&password="123456"
1.为了调用方便,将参数全部设置为static,结果可想而知,获取不到,只能是null
packagecom.example.demo.constants;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.stereotype.Component;
@Componentpublic classTestYml {public staticString B;public staticString C;public staticString D;public staticString getB() {returnB;
}
@Value("${A.B}")public static voidsetB(String b) {
B=b;
}public staticString getC() {returnC;
}
@Value("${A.C}")public static voidsetC(String c) {
C=c;
}public staticString getD() {returnD;
}
@Value("${A.D}")public static voidsetD(String d) {
D=d;
}
}
View Code
执行测试代码
@RunWith(SpringRunner.class)
@SpringBootTest(classes= Application.class)public classApplicationTests {
@Testpublic voidtest(){
String b=TestYml.B;
System.out.println(b);
}
}
View Code
得到结果如下:
2.然后去掉set方法中的static,执行上一步的测试代码可以正常获取
3.如果需要将B分别和C,D进行拼接呢,将代码修改如下:
importorg.springframework.beans.factory.annotation.Value;importorg.springframework.stereotype.Component;
@Componentpublic classTestYml {public staticString B;public staticString C;public staticString D;public staticString getB() {returnB;
}
@Value("${A.B}")public voidsetB(String b) {
B=b;
}public staticString getC() {returnC;
}
@Value("${A.C}")public voidsetC(String c) {
C= getB() +c;
}public staticString getD() {returnD;
}
@Value("${A.D}")public voidsetD(String d) {
D= getB() +d;
}
}
View Code
执行代码如下:
@RunWith(SpringRunner.class)
@SpringBootTest(classes= Application.class)public classApplicationTests {
@Testpublic voidtest(){
String b=TestYml.B;
String c=TestYml.C;
String d=TestYml.D;
System.out.println(b);
System.out.println(c);
System.out.println(d);
}
}
拼接的结果时而正常,时而为null,如下:
4.然后将get方法的static也去掉,结果同样也是不稳定
测试代码如下:
@RunWith(SpringRunner.class)
@SpringBootTest(classes= Application.class)public classApplicationTests {
@Testpublic voidtest(){int i = 10;for (int i1 = 0; i1 < i; i1++) {
String b=TestYml.B;
String c=TestYml.C;
String d=TestYml.D;
System.out.println(b);
System.out.println(c);
System.out.println(d);
}
}
}
结果如下:
5.将@Value至于参数处,且将参数的static也去掉,并且将测试代码改为注入的方式,结果则是拼接的null都不见了
6.然后修改get方法,将拼接的值get作为该参数的返回,调用方式直接使用注入和get方法,获取值才正常
importorg.springframework.beans.factory.annotation.Value;importorg.springframework.stereotype.Component;
@Componentpublic classTestYml {
@Value("${A.B}")privateString B;
@Value("${A.C}")privateString C;
@Value("${A.D}")privateString D;publicString getB() {returnB;
}public voidsetB(String b) {
B=b;
}publicString getC() {return getB() +C;
}public voidsetC(String c) {
C=c;
}publicString getD() {return getB() +D;
}public voidsetD(String d) {
D=d;
}
}
View Code
测试代码
@RunWith(SpringRunner.class)
@SpringBootTest(classes= Application.class)public classApplicationTests {
@Autowired
TestYml testYml;
@Testpublic voidtest(){int i = 10;for (int i1 = 0; i1 < i; i1++) {
String b=testYml.getB();
String c=testYml.getC();
String d=testYml.getD();
System.out.println(b);
System.out.println(c);
System.out.println(d);
}
}
}
View Code
执行结果可以正常获取到值
最后
以上就是朴实小虾米为你收集整理的springboot 不响应字段为空_Spring boot获取yml字段内容为null的各种情况的全部内容,希望文章能够帮你解决springboot 不响应字段为空_Spring boot获取yml字段内容为null的各种情况所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复