如何在SpringBoot中使用SimpleUrlHandlerMapping

时间:2018-11-10 17:56:12

标签: spring spring-boot

我正在使用SpringBoot,并且想为我的自定义映射配置SimpleUrlHandlerMapping bean。为此,下面是我编写的代码。

@Configuration
public class WebConfiguration {

    @Bean
    public SimpleUrlHandlerMapping simpleUrlHandlerMapping() {
        System.out.println("creating  SimpleUrlHandlerMapping ....");
        SimpleUrlHandlerMapping simpleUrlHandlerMapping = new SimpleUrlHandlerMapping();
        simpleUrlHandlerMapping.setOrder(0);
        Properties urlProperties = new Properties();
        urlProperties.put("/index", "myController");

        simpleUrlHandlerMapping.setMappings(urlProperties);

        return simpleUrlHandlerMapping;
    }
}

我还有一个名称为myController的Controller,其代码如下。

@Controller("myController")
public class MyController extends AbstractController {

    @Override
    protected ModelAndView handleRequestInternal(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {
        System.out.println("My Controller!");
        return null;
    }

}

现在按http://localhost:7171//index时按代码进行操作,则它将在控制台上打印“我的控制器”消息。但是它不碰这个代码。 因为这是一个SpringBoot应用程序,并且在启动时使用myController打印此bean注册。

有人可以帮助解决此问题并告诉我这段代码有什么问题吗?

谢谢。

1 个答案:

答案 0 :(得分:2)

@Autowire Configuration类中的Controller Bean,并将其通过Properties

  

SimpleUrlHandlerMapping是最灵活的HandlerMapping实现。它允许在bean实例和URL之间或bean名称和URL之间进行直接和声明性映射。

     

让我们的地图向“欢迎” bean请求“ / simpleUrlWelcome”和“ / * / simpleUrlWelcome”:here

@Configuration
public class WebConfiguration {

@Autowired
private indexController index;

@Bean
public SimpleUrlHandlerMapping simpleUrlHandlerMapping() {
    System.out.println("creating  SimpleUrlHandlerMapping ....");
    SimpleUrlHandlerMapping simpleUrlHandlerMapping = new SimpleUrlHandlerMapping();
    simpleUrlHandlerMapping.setOrder(0);
    Properties<String,Object> urlProperties = new Properties<>();
    urlProperties.put("/index", index);

    simpleUrlHandlerMapping.setMappings(urlProperties);

    return simpleUrlHandlerMapping;
     }
 }

控制器

@Controller("index")
public class indexController extends AbstractController {

@Override
protected ModelAndView handleRequestInternal(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {
    System.out.println("My Controller index!");
    return null;
     }

 }