Tôi tự hỏi làm thế nào để Tomcat
khởi động ứng dụng của tôi trên Spring MVC?Tomcat chính xác khởi động ứng dụng mà không cần web.xml như thế nào?
Tôi có một initializer:
public class AppInitializer implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext container) {
AnnotationConfigWebApplicationContext rootCtx = new AnnotationConfigWebApplicationContext();
rootCtx.register(AppConfig.class);
container.addListener(new ContextLoaderListener(rootCtx));
AnnotationConfigWebApplicationContext dispatcherCtx = new AnnotationConfigWebApplicationContext();
dispatcherCtx.register(FreeMarkerWebConfig.class);
ServletRegistration.Dynamic dispatcher = container.addServlet("dispatcher", new DispatcherServlet(dispatcherCtx));
dispatcher.setLoadOnStartup(1);
dispatcher.addMapping("/");
}
}
tôi biết lý do tại sao chúng ta cần web.xml
và làm thế nào Tomcat
sử dụng nó để bootstrap ứng dụng. Nhưng tôi không hiểu làm thế nào để Tomcat
biết servlet nào nên sử dụng để khởi động ứng dụng nếu không có tệp xml
, nhưng chỉ AppAppInitializer
?
Dependencies
<!-- spring mvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.2.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>4.2.1.RELEASE</version>
</dependency>
<!-- servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
</dependency>
...
tôi thấy lớp này trong mùa xuân lõi SpringServletContainerInitializer
. Có đúng là Tomcat
sử dụng nó để khởi động ứng dụng của tôi không?
http://docs.oracle.com/javaee/7/api/javax/servlet/ServletContainerInitializer.html?is-external=true
Cảm ơn. Bây giờ tôi biết cách nó hoạt động. – Finkelson