Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将遗留代码转换为Spring依赖项注入_Java_Spring - Fatal编程技术网

Java 将遗留代码转换为Spring依赖项注入

Java 将遗留代码转换为Spring依赖项注入,java,spring,Java,Spring,遗留代码片段如下所示。我想做的是将这段代码转换成Spring。但问题是Spring自己管理依赖性。我的问题是如何注入构造函数提供的serviceId public class MyService{ public Attribute getAttribute(){ int serviceId =1; new ServiceDao(serviceId).getAttribute(); } } class ServiceDao{ privat

遗留代码片段如下所示。我想做的是将这段代码转换成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);

    }


}

在构造函数和settersIs上使用
@Autowired
,即
serviceId
值在
MyService
中真正硬编码?如果不是,请提供一个关于它来自何处的提示。@CostiCiudatu Hi,这是来自工厂的相同通过id。。新建MyServiceFactory(serviceId),然后致电get Attributel让我知道我的回答是否对您有所帮助。如果行得通,请接受。谢谢,我认为您还应该提供一个构造函数注入的示例。