我使用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();
}
答案 0 :(得分:0)
我对Jetty并不熟悉,但您可以通过以下方式设置和初始化DispatcherServlet
:
AbstractAnnotationConfigDispatcherServletInitializer
的java类(通常称为WebAppInitializer
)。getRootConfigClasses()
(返回配置Application Context的类),getServletConfigClasses()(返回配置ServletContext的类)和getServletMappings()
(设置{{1} }}映射)。DispatcherServlet
。您应该使用WebConfig
和@Configuration
对其进行注释。此外,您应该使用它来定义@EnableWebMvc
bean:```的java
ViewResolver
```