在Rest Service上更正spring bean的范围

时间:2014-12-18 19:32:10

标签: spring rest resteasy

我正在使用RestEasy和Spring 4创建REST服务。

该服务基本上是复杂批处理的端点。因此客户端调用服务传递一堆参数,然后触发处理。

由于最初传递给服务的参数很多,并且这些参数几乎在系统的各个地方使用,我选择创建一个帮助者'将保存参数的bean,然后每个其他bean都可以自动装配'参数bean'并使用它。

示例:

客户端调用的网址为:http://localhost/rest/service/execute?processType=A&initialDate=20141220&finalDate=20141231......

REST服务端点类似于:

@Path("/service")
public class RESTService {  
    @Autowired
    private RequestParams params;

    @Autowired
    private ProcessOrchestrator orchestrator;

    @POST
    @Path("/execute")
    @Produces(MediaType.TEXT_PLAIN)
    public Response executa(
            @NotNull @QueryParam("processType") String processType,
            @NotNull @QueryParam("initialDate") String initialDate,
            @NotNull @QueryParam("finalDate") String finalDate,
            ...
            ) {

        params.setProcessType(processType);
        params.setInitialDate(initialDate);
        params.setFinalDate(finalDate);

        orchestrator.triggerBatchProcess();        

    }
}

RequestParams bean只保存参数值:

@Component
public class RESTService {  
    private String processType;
    private String initialDate;
    private String finalDate;
    ...
    // getters and setters
}

其他bean将@Autowire params bean并使用其参数:

@Component
public class DataProcessor {    
     @Autowire
     private RequestParams params;
     //...
}

@Component
public class DataConverter {    
     @Autowire
     private RequestParams params;
     //...
}

@Component
public class FileWritter {  
     @Autowire
     private RequestParams params;
     //...
}

设计看起来正确,对吧?现在,我关注的是:如何确保每次调用服务时都创建一个新的RequestParams实例?我是否需要为所有bean声明范围("请求"例如)?

0 个答案:

没有答案