我正在开发一个webservice,我需要验证请求中针对数据库发送的特定httpheader。
我想使用RestEasy提供程序执行相同操作,因为需要将相同的功能应用于所有服务。
@Provider
@ServerInterceptor
public class TestValidationInterceptor implements PreProcessInterceptor {
@Autowired
DetailsDelegate detailsDelegate;
@Override
public ServerResponse preProcess(HttpRequest request, ResourceMethod method) throws Failure, WebApplicationException {
//code to get data using detailsDelegate.
return null;
}
}
public interface DetailsDelegate {
String BEAN_ID = "DetailsDelegate";
/**
* @param appName
* @return
* @throws BaseException
*/
ServiceInfo getServiceDetails(String appName) throws BaseException;
}
@Service("detailsDelegate")
public class DetailsDelegateImpl implements DetailsDelegate {
@Override
public ServiceInfo getServiceDetails(String appName) throws BaseException {
return null;
}
}
detailsDelegate实例未获得自动装配且为null。
有人可以解释我为什么要面对这个问题。
答案 0 :(得分:1)
最好让spring选择它的bean名称来改变
@Service("detailsDelegate")
到
@Service
自动装配界面:
@Auowired
DetailsDelegate
最后确保在您的配置中扫描定义了DetailsDelegate的包:
@ComponentScan("com.mypackage")
有关示例,请参阅http://docs.spring.io/spring-javaconfig/docs/1.0.0.M4/reference/html/ch06s02.html