如何在我们的Web服务中使用spring依赖注入

时间:2014-11-10 04:17:06

标签: spring dependency-injection

我们正在尝试使用Spring DI重新实现的Web服务。

以下是它的工作原理: 在Web服务在控制器中接收的每个请求上,基于页面名称,我们实例化一个处理程序以获取可以处理请求的任务列表。

interface Handler {
    List<Task> getTaskList();
}

class Controller {
    //Inject handler
    Handler handler;

    processrequest(){
        handler.getTasklist() -> execute
    }
}

我们有大约5-6个这样的处理程序,我们希望根据请求页面名称将相应的处理程序注入控制器。

最好的办法是什么? 如何动态注入不同的处理程序?

由于

1 个答案:

答案 0 :(得分:0)

1-在配置中创建处理程序(或注释您的服务实现):

@Bean
public Handler handler1() {
    // return handler 1
}

@Bean
public Handler handler2() {
    // return handler 2
}

2a-将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
    }
}