对于Spring来说,这是一个全新的概念。我想创建一个代表汽车经销商的服务类。汽车经销商是有收入的。因此,我有一个名为totalRevenue
的long
字段,我想用它来示例化我的经销商。我有一个单独的@Repository
注解类用于我的存储库。下面是我目前所拥有的内容的一个片段:
@Slf4j
@Data
@Service
public class DealershipServiceImpl implements DealershipService {
private long totalRevenue;
private final CarRepository carRepository;
public DealershipServiceImpl(@Value("#{ 1000000L }")Long initialRevenue, CarRepository carRepository) {
this.totalRevenue = initialRevenue;
this.carRepository = carRepository;
}
.
.
.
我使用基于[this (rather old) post][1]
信息的@Value
注解,但是IntelliJ似乎不喜欢它,将鼠标悬停在变量上显示“Could not autowire...”,如您所见:
而它似乎也不喜欢我使用@Value
:
如何在构造函数中注入一个默认值?我希望在构造函数中提供Long
字段,这样我就可以通过Junit测试有效地测试类。
2条答案
按热度按时间9vw9lbht1#
您可以使用@Value注解来设置
totalRevenue
的初始值。并将此属性放在application.properties(或应用程序.yml)中:
此外,如果不添加此属性,则将应用默认值(20000)。
P.S. @来自包
org.springframework.beans.factory.annotation
的值注解。不要与类似的Lombok注解混淆希望对你有帮助)
mqkwyuun2#
不需要在
application.properties
中定义initialRevenue
,直接在@Value
中指定值,不需要#{}
,系统会自动转换为正确的数据类型: