我是靠谱客的博主 朴实小虾米,最近开发中收集的这篇文章主要介绍springboot 不响应字段为空_Spring boot获取yml字段内容为null的各种情况,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

首先,在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的各种情况所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部