我正在使用SpringBoot 2.1.3 (Embedded Tomcat)
+ Thymeleaf 3.0
+ Java 8
。
我有一个像这样的简单班级:
@Data
public class Machine {
private Integer price;
@Value("${settings.default}")
private String settings;
}
还有一个简单的application.properties
:
settings.default=deafult
但是当我仍然在代码中实例化该类时:
Machine m = new Machine();
System.out.println(m.getSettings);
它返回null。如果可以的话,这很明显:
@Data
public class Machine {
private Integer price;
private String settings = "Default";
}
它可以工作。或者,如果我在类方法中使用该值,它将再次起作用。 怎么了?我可以做类似的事情吗?
谢谢
答案 0 :(得分:0)
应使用构造型注释声明类,以使用@Value
@Component
public class Machine {
private Integer price;
@Value("${settings.default}")
private String settings;
}
当然,您必须自动装配Machine类(Spring已定义了bean),实例化一个新的Object不会获得该值,因此要使用
@Service
public class FooService {
@Autowire
private Machine machine;
public void fooMethod() {
System.out.println(machine.getSettings()); // default
}
}