实例化 class 时丢失 Spring @Value("${}")
Losing Spring @Value("${}") when instantiate class
我正在使用 SpringBoot 2.1.3 (Embedded Tomcat)
+ Thymeleaf 3.0
+ Java 8
.
我有一个简单的 class 像这样:
@Data
public class Machine {
private Integer price;
@Value("${settings.default}")
private String settings;
}
还有一个简单的 application.properties
:
settings.default=deafult
但是当我在代码中实例化 class 时:
Machine m = new Machine();
System.out.println(m.getSettings);
它returns 无效。显然,如果我这样做:
@Data
public class Machine {
private Integer price;
private String settings = "Default";
}
有效。或者,如果我在 class 方法中使用该值,它会再次有效。
怎么了?我可以这样做吗?
谢谢
A class 应使用构造型注释声明以使用 @Value
@Component
public class Machine {
private Integer price;
@Value("${settings.default}")
private String settings;
}
当然你必须自动装配机器class(Spring已经定义了bean),实例化一个新的对象不会得到值,所以要使用
@Service
public class FooService {
@Autowire
private Machine machine;
public void fooMethod() {
System.out.println(machine.getSettings()); // default
}
}
我正在使用 SpringBoot 2.1.3 (Embedded Tomcat)
+ Thymeleaf 3.0
+ Java 8
.
我有一个简单的 class 像这样:
@Data
public class Machine {
private Integer price;
@Value("${settings.default}")
private String settings;
}
还有一个简单的 application.properties
:
settings.default=deafult
但是当我在代码中实例化 class 时:
Machine m = new Machine();
System.out.println(m.getSettings);
它returns 无效。显然,如果我这样做:
@Data
public class Machine {
private Integer price;
private String settings = "Default";
}
有效。或者,如果我在 class 方法中使用该值,它会再次有效。 怎么了?我可以这样做吗?
谢谢
A class 应使用构造型注释声明以使用 @Value
@Component
public class Machine {
private Integer price;
@Value("${settings.default}")
private String settings;
}
当然你必须自动装配机器class(Spring已经定义了bean),实例化一个新的对象不会得到值,所以要使用
@Service
public class FooService {
@Autowire
private Machine machine;
public void fooMethod() {
System.out.println(machine.getSettings()); // default
}
}