传统代码段如下所示。我想做的就是将此代码转换为Spring。但是问题是Spring自行管理了依赖项。我的问题是如何注入构造函数提供的serviceId
?
public class MyService{
public Attribute getAttribute(){
int serviceId =1;
new ServiceDao(serviceId).getAttribute();
}
}
class ServiceDao{
private int serviceId;
ServiceDao(int serviceId){
this.serviceId = serviceId;
}
public Attribute getAttribute(){
//to get attribute
}
}
最佳答案
基本上,您每次调用时都尝试创建新对象
new ServiceDao(serviceId).getAttribute();
这纯粹是反对依赖注入。由于您的逻辑基于服务ID,因此您可以按以下方式创建服务类
@Service
class ServiceDao{
ServiceDao(){
}
public Attribute getAttribute(int serviceId){
//to get attribute
//return attribute based on service Id,
//if(serviceId==1)
//{ return new Attribute("Red");}
}
}
您的Myservice可能是这样的
@Service
public class MyService{
@Autowired
ServiceDao dao;
public Attribute getAttribute(){
int serviceId =1;
return dao.getAttribute(1);
}
}