我正在使用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注册。
有人可以帮助解决此问题并告诉我这段代码有什么问题吗?
谢谢。
答案 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;
}
}