我正在使用 Spring MVC 和 Maven 创建一个webapp项目。我还使用Spring注释驱动配置。
我想创建一个父项目,其中包含我的容器的所有SpringMVC配置和ServletContext侦听器。然后,我的所有Web项目都将依赖于此项目,以便使用Spring MVC进行初始化。
我的基础项目中也有ZK框架,但我觉得这很好。
所以我有以下课程:
基础项目:
public class DefaultInitializer implements WebApplicationInitializer {
private Class<?> config = BaseConfig.class;
public void onStartup(ServletContext container) throws ServletException {
init();
// Create the 'root' Spring application context
AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext();
rootContext.register(config);
// Manage the lifecycle of the root application context
container.addListener(new ContextLoaderListener(rootContext));
// Create the dispatcher servlet's Spring application context
AnnotationConfigWebApplicationContext dispatcherServlet = new AnnotationConfigWebApplicationContext();
dispatcherServlet.register(MvcConfig.class);
// Register and map the dispatcher servlets
ServletRegistration.Dynamic dispatcher = container.addServlet(
"dispatcher", new DispatcherServlet(dispatcherServlet));
dispatcher.setLoadOnStartup(1);
dispatcher.addMapping("/");
ServletRegistration.Dynamic zkDispatcher = container.addServlet(
"zkLoader", new DHtmlLayoutServlet());
zkDispatcher.setLoadOnStartup(1);
zkDispatcher.setInitParameter("update-uri", "/zkau");
zkDispatcher.addMapping("*.zul");
ServletRegistration.Dynamic zkUpdater = container.addServlet(
"auEngine", new DHtmlUpdateServlet());
zkUpdater.addMapping("/zkau/*");
}
protected void setConfig(Class<?> config){
this.config = config;
}
protected void init(){
setConfig(BaseConfig.class);
}
}
Webapp项目:
public class Initializer extends DefaultInitializer{
protected void init(){
setConfig(WebConfig.class);
}
}
这些是基础项目
中的web.xml和mvc-config<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>base-config</display-name>
</web-app>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!-- Uncomment and your base-package here:
<context:component-scan
base-package="org.springframework.samples.web"/> -->
<mvc:annotation-driven />
</beans>
这些是 webapp项目
中的web.xml<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>web-project</display-name>
</web-app>
我检查过如果我在tomcat中运行我的基础项目它运行正常,但是当我尝试运行web应用程序项目(对我的基础项目有一个pom依赖项)时,它不会调用onStartup方法。 / p>
我做错了什么?
谢谢。
编辑:
运行我的服务器时也有这个输出
在类路径上检测不到Spring WebApplicationInitializer类型
答案 0 :(得分:0)
嗯,终于可行了。
我不确定它是什么,但我做了以下步骤:
在我的研究中,我学到了一些东西,所以如果发生这种情况,请查看: