传统代码段如下所示。我想做的就是将此代码转换为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);

    }


}

09-10 07:48