Java Spring上下文中的实用程序应该是静态的还是注入的?

Java Spring上下文中的实用程序应该是静态的还是注入的?,java,spring,web-services,utility,Java,Spring,Web Services,Utility,我正在编写一些utlility方法,帮助为webservice请求构建复杂的对象结构 使用Spring时:最好将这些类作为静态实用程序提供,还是将它们注入/自动连接 例如: //the service used to build different parts for the webservice request class RequestService { public addCurrency(Req req) { //create currency xml objec

我正在编写一些utlility方法,帮助为webservice请求构建复杂的对象结构

使用
Spring
时:最好将这些类作为静态实用程序提供,还是将它们注入/自动连接

例如:

//the service used to build different parts for the webservice request
class RequestService {
    public addCurrency(Req req) {
        //create currency xml object
        req.addCurrency(cur);
    }

    public addPassengers(Req req, List<String> names) {
        for (String name : names) {
            req.getPassengers().add(passenger);
            //create passengers
        }
    }
}
class WebserviceClient {
     void runWithStatic() {
         Req req = new Req();
         RequestService.addCurrency(req, ..);
         RequestService.addPassengers(req, ..);
         send(req);
     } 

     //or
     @Autowired
     private RequestService reqService;

     void runWithInjected() {
         Req req = new Req();
         reqService.addCurrency(req, ..);
         reqService.addPassengers(req, ..);
         send(req);
     } 
}
//用于为webservice请求构建不同部分的服务
类请求服务{
公共地址货币(Req){
//创建货币xml对象
请求添加货币(当前);
}
公共添加乘客(请求、列表名称){
for(字符串名称:名称){
请求获取乘客().添加(乘客);
//创造乘客
}
}
}
类WebserviceClient{
void runWithStatic(){
Req Req=新的Req();
RequestService.addCurrency(请求,…);
请求服务。添加乘客(请求,…);
发送(请求);
} 
//或
@自动连线
私有请求服务请求服务;
void runWithInjected(){
Req Req=新的Req();
请求服务。添加货币(请求,…);
请求服务。添加乘客(请求,…);
发送(请求);
} 
}

从总体spring设计的角度来看,是否有一种方法更可取?

我更倾向于接口和注入-这允许您在以后的某个时候更改服务的实现。它还允许您在测试期间进行模拟。以那种方式使用
静态
方法是邪恶的——它使任何类型的测试都成为一场噩梦。总是过度设计一切。许多人认为,在Java中,这种方法是不会出错的。说真的,为什么要注入依赖项,比如
static boolean equal(Object,Object)
logerror(String message)
或任何数量的此类小型实用方法?正如您在上面所读到的,我们并不是在讨论等式/日志记录方法……难道
RequestService
不应该是
RequestFactory
并且也应该负责构建
Req
对象吗?这就是您没有硬编码的
Req
构造函数。