1.我们在yml配置文件中写入key和value值
name: hello
2.我们写下测试类,这里使用Spring boot test 做测试
@SpringBootTest
public class ApplicationTest {
@Value("${name}")
private static String name;
@Test
public void test01(){
System.out.println("=======================> 输出 <=========================");
System.out.println(name);
System.out.println("=======================================================");
}
}
3.我们输出试试:

我们可以看到未知中输出这样一段话:
Autowired annotation is not supported on static fields: private static java.lang.String com.rubik.merchant.test.ApplicationTest.name
我们来翻译一下: 静态字段不支持自动装配;

解决:
@SpringBootTest(classes = ApplicationWeb.class)
public class ApplicationTest {
private static String name;
@Value("${name}")
public void setName(String name) {
this.name = name;
}
@Test
public void test01(){
System.out.println("=======================> 输出 <=========================");
System.out.println(name);
System.out.println("=======================================================");
}
}
我们写入set方法,用set方法注入,当然也可以构造方法注入的,注意这里的set方法不要写static修饰符我们再看下输出结果:

好了,我们再试试构造方法注入:
@SpringBootTest
public class ApplicationTest {
private static String name;
public ApplicationTest(@Value("${name}") String name) {
this.name= name;
}
@Test
public void test01(){
System.out.println("=======================> 输出 <=========================");
System.out.println(name);
System.out.println("=======================================================");
}
}
打印一下结果

**
总结: 我们可以用构造方法或set方法注入static静态属性
**
本文介绍了在SpringBoot测试类中遇到的静态字段不支持@Autowired自动装配的问题,以及如何通过设置setter方法或构造方法来解决这个问题。通过示例代码展示了setter注入和构造方法注入的实现,强调了这两种静态属性注入方式的正确做法。
1798

被折叠的 条评论
为什么被折叠?



