嵌入式Jetty + Spring MVC的主要方法



我正在使用嵌入式Jetty和Spring MVC,我正在通过main函数启动我的WebApplication。我不喜欢它的样子,它不是很干净,我觉得我做错了什么,即使它工作得很好。我的问题是,我想初始化ServerHolder,ServletContextHandler和服务器对象外的主要方法,但我不能这样做,因为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();
}

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

  1. 声明一个java类来实现抽象类AbstractAnnotationConfigDispatcherServletInitializer(通常称为WebAppInitializer)。
  2. 实现其抽象方法- getRootConfigClasses()(返回配置应用程序上下文的类),getServletConfigClasses()(返回配置ServletContext的类)和getServletMappings()(设置DispatcherServlet映射)。
  3. 我通常调用配置ServletContext的类为WebConfig。您应该用@Configuration@EnableWebMvc注释它。此外,您应该使用它来定义ViewResolver bean:

' ' ' java

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

' ' '

最新更新