2015-10-18 115 views
0

我正在使用Embedded Jetty和Spring MVC,並且通過主函數啓動我的WebApplication。 我不喜歡它看起來的樣子,它不是很乾淨,我覺得我做錯了什麼,即使它工作得很好。 我的問題是,我想初始化主方法之外的ServerHolder,ServletContextHandler和Server對象,但是我不能這樣做,因爲DispatcherServlet需要和ApplicationContext。嵌入式Jetty + Spring MVC主要方法

任何想法?

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(); 
} 

回答

0

我不跟熟悉並且碼頭,但你可以設置和通過以下方式初始化DispatcherServlet

  1. 聲明它實現了抽象類AbstractAnnotationConfigDispatcherServletInitializer一個Java類(它通常會被稱爲WebAppInitializer )。
  2. 實現其抽象方法 - getRootConfigClasses()(返回配置應用程序上下文的類),getServletConfigClasses()(它返回配置ServletContext的類)和getServletMappings()(它設置DispatcherServlet映射)。
  3. 我通常將配置ServletContext的類調用爲WebConfig。您應該使用@Configuration@EnableWebMvc對其進行註釋。此外,你應該用它來定義一個ViewResolver豆:

```Java的

@Bean 
public ViewResolver viewResolver() { 
    InternalResourceViewResolver resolver = new InternalResourceViewResolver(); 
    resolver.setPrefix("/WEB-INF/view"): 
    resolver.setSuffix(".jsp"); 
    resolver.setExposeContextBeansAsAttributes(true); 
    return resolver; 
} 

```