gpt4 book ai didi

java - 子项目中的 WebApplicationInitializer

转载 作者:行者123 更新时间:2023-11-28 23:29:25 24 4
gpt4 key购买 nike

我正在使用 Spring MVCMaven 创建一个 webapp 项目。我也是使用 Spring 注释驱动配置的新手。

我想为我的容器创建一个包含所有 SpringMVC 配置和 ServletContext 监听器的父项目。然后,我的所有 Web 项目都将依赖于此项目,以便使用 Spring MVC 进行初始化。

我的基础项目中也有 ZK 框架,但我认为这很好。

所以我有以下类(class):

基础项目:

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

}

网络应用项目:

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 方法。

我做错了什么?

谢谢。

编辑:

我在运行我的服务器时也有这个输出

在类路径上未检测到 Spring WebApplicationInitializer 类型

最佳答案

好吧,终于成功了。

我不确定那是什么,但我做了以下步骤:

  • 将基础项目 pom 包装更改为“jar”并将其作为依赖项导入
  • 清理tomcat服务器

在我的研究中,我学到了一些东西,所以如果您遇到这种情况,请检查:

  • 父 pom can't be packaging jar , 所以它不能有源代码
  • 检查您的类路径中是否有更多不同版本的 WebApplicationInitializer 类。 +info

关于java - 子项目中的 WebApplicationInitializer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32524920/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com