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

执行结果可以正常获取到值

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值