嵌入式Jetty + Spring MVC主要方法

时间:2015-10-18 08:47:31

标签: spring-mvc embedded-jetty

我使用Embedded Jetty和Spring MVC,并通过main函数启动WebApplication。 我不喜欢它的样子,它不是很干净,我觉得我做错了,即使它工作得很好。 我的问题是我想在main方法之外初始化ServerHolder,ServletContextHandler和Server对象,但我不能这样做,因为DispatcherServlet需要和ApplicationContext。

有什么想法吗?

public static void main(String[] args) throws Exception {

    AnnotationConfigWebApplicationContext applicationContext = new AnnotationConfigWebApplicationContext();
    applicationContext.register(EPConfiguration.class);

    ServletHolder servletHolder = new ServletHolder(new DispatcherServlet(applicationContext));

    ServletContextHandler context = new ServletContextHandler();
    context.setContextPath("/");
    context.addServlet(servletHolder, "/*");

    BasicConfigurator.configure();

    Server server = new Server();
    server.setHandler(context);
    //HTTP
    ServerConnector connector = new ServerConnector(server);
    connector.setPort(9999);

    server.setConnectors(new Connector[]{connector});
    server.start();
    server.join();
}

1 个答案:

答案 0 :(得分:0)

我对Jetty并不熟悉,但您可以通过以下方式设置和初始化DispatcherServlet

  1. 声明一个实现抽象类AbstractAnnotationConfigDispatcherServletInitializer的java类(通常称为WebAppInitializer)。
  2. 实现其抽象方法 - getRootConfigClasses()(返回配置Application Context的类),getServletConfigClasses()(返回配置ServletContext的类)和getServletMappings()(设置{{1} }}映射)。
  3. 我通常将调用ServletContext的类调用为DispatcherServlet。您应该使用WebConfig@Configuration对其进行注释。此外,您应该使用它来定义@EnableWebMvc bean:
  4. ```的java

    ViewResolver

    ```