是否可以将@Value
属性注入到@Service
的setter中?
@Service
public class DateService {
private DateTimeFormatter dtf;
public void setDtf(@Value("${spring.jackson.date-format}") String format) {
dtf = DateTimeFormatter.ofPattern(format);
}
}
问题:setter永远不会被调用。但是我如何注入String
属性并直接从它示例化DateTimeFormatter
呢?
我也试过使用SpEL
,但以下格式不正确。
@Value("#{T(java.time.format.DateTimeFormatter.ofPattern(${spring.jackson.date-format}))}")
private DateTimeFormatter dtf;
4条答案
按热度按时间1qczuiv01#
假设
DateService
只有一个构造函数,你可以使用构造函数注入:k4emjkb12#
我不知道为什么@sxc-dev的答案被否决了,因为如果你因为某些原因不能使用构造函数,它会更好,而且它正在工作。
这个解决方案也有效
如果你有lombok和其他服务要注入,这是一个非常有用的方法
oprakyz73#
不将@Value注解添加在setter方法上,而只是在成员声明上,怎么样?
除非显式地使用setter方法,否则您可能根本不需要它
7lrncoxx4#
将@Autowired添加到setter应该可以工作。