【发布时间】:2018-03-28 12:34:41
【问题描述】:
我有一个名为 Profile 的类,它从 application.yaml 读取名字和姓氏,并使用静态 print() 方法打印全名。代码如下:
@Component
public final class Profile {
private static final String NAME = "config.firstName";
private static final String LAST_NAME = "config.lastName";
private static String name;
private static String lastName;
public Profile(
@Value("${" + NAME + "}") final String name,
@Value("${" + LAST_NAME + "}") final String lastName) {
Profile.name = notNull(name);
Profile.lastName = notNull(lastName);
}
public static String print() {
return name + " " + lastName;
}
}
我写了一个单元测试来测试这个,这里是代码:
import static org.junit.Assert.assertEquals;
import org.junit.Test;
public class PrintTest {
@Test
public void testPrint() {
String fullName = Hello.print();
assertEquals("John Smith", fullName);
}
}
当我运行单元测试时,我得到 "null null" 而不是 John Smith。
有人可以帮忙吗?
【问题讨论】:
-
为什么要... 你有一个 Spring 范围之外的类,你希望它自动被注入值。您至少必须使用 spring 配置实例并使用 Spring 托管实例。
标签: java spring spring-boot