我们有一个web服务,我们正在尝试使用Spring重新实现它。
下面是它的工作原理:在控制器中web服务接收到的每个请求上,基于页面名称,我们实例化一个处理程序,以获得可以处理请求的任务列表。
interface Handler {
List<Task> getTaskList();
}
class Controller {
//Inject handler
Handler handler;
processrequest(){
handler.getTasklist() -> execute
}
}我们有大约5-6个这样的处理程序,我们希望根据请求分页将相应的处理程序注入控制器。
做这件事最好的方法是什么?如何在飞行中注入不同的处理程序?
谢谢
发布于 2014-11-10 12:57:48
1-在配置中创建处理程序(或注释服务实现):
@Bean
public Handler handler1() {
// return handler 1
}
@Bean
public Handler handler2() {
// return handler 2
}将ApplicationContext注入控制器。根据请求映射检索所需的服务。
class Controller {
@Autowired
private ApplicationContext context;
@RequestMapping(value = "/handler1")
processrequest(){
Handler handler = context.getBean("handler1");
handler.getTasklist() -> execute
}
@RequestMapping(value = "/handler2")
processrequest(){
Handler handler = context.getBean("handler2");
handler.getTasklist() -> execute
}
}2b-或者,创建多个控制器,并注入适当的处理程序。
@RequestMapping("/handler1")
class Controller1 {
@Autowired
@Qualifier("handler1")
private Handler handler;
processrequest(){
handler.getTasklist() -> execute
}
}
@RequestMapping("/handler2")
class Controller2 {
@Autowired
@Qualifier("handler2")
private Handler handler;
processrequest(){
handler.getTasklist() -> execute
}
}https://stackoverflow.com/questions/26836674
复制相似问题