如何在运行时解决哪种Controller方法将为当前请求提供服务?

时间:2015-07-03 09:01:04

标签: java spring spring-boot

我需要创建一个`<oxy:Plot x:Name="PlotValues" Margin="10"> <oxy:Plot.Axes> <oxy:DateTimeAxis StringFormat="HH:mm:ss" Title="Время" Position="Bottom"/> <oxy:LinearAxis Name="LinearAxis" Title="Значение" Position="Left"/> </oxy:Plot.Axes> <oxy:Plot.Series> <oxy:LineSeries ItemsSource="{Binding CollectionOfDataPoint}"/> </oxy:Plot.Series> </oxy:Plot>` ,它能够在运行时识别哪个Filter方法将为当前请求提供服务,然后对方法进行一些内省以检查特定的{{1}并相应地修改请求/响应。

我可以在启动时通过各自请求映射的URI索引Controller方法来构建Annotations,但我想使用Spring已用于执行此解决方案的任何机制会更聪明

所以问题有两个:

  • Spring如何实际做到这一点? (以及如何利用它)
  • 这是一个关于更好的方法的问题,而不是在启动时构建Map

2 个答案:

答案 0 :(得分:0)

如何使用ClassPathScanningCandidateComponentProvider

      ClassPathScanningCandidateComponentProvider scanner = new ClassPathScanningCandidateComponentProvider(false);
    scanner.addIncludeFilter(new AnnotationTypeFilter(Controller.class));
    for (BeanDefinition beanDefinition : scanner.findCandidateComponents("com.yourPackage.controllers")){
        System.out.println(beanDefinition.getBeanClassName());
    }

此处为API http://docs.spring.io/spring-framework/docs/2.5.6/api/org/springframework/context/annotation/ClassPathScanningCandidateComponentProvider.html

答案 1 :(得分:0)

您不需要在启动时构建地图,您可以查看它在DispatcherServlet中的完成情况。 查看org.springframework.web.servlet.DispatcherServlet#getHandler方法。