spring 具有不同上下文的多模块项目

spring multi module project with different context

大家好。 我在多模块项目中遇到问题。我的项目有 3 个 jar 模块和 1 个 web 模块。

ABZ
ABZ-service
ABZ-dao
ABZ-webapp

在这个 'ABZ' 中是我的父模块,'ABZ-webapp' 是我的网络模块。所有请求都通过 spring 容器处理。 但是现在我想为 Web 服务添加新模块 spring REST Web 服务。我想在其中安装 REst 控制器。

ABZ-webservice

我的问题是,我应该怎么做才能使我的上下文扫描 'ABZ-webservice' 模块的包装结构。仅供参考..ABZ-webservice .

web.xml

<servlet>
    <servlet-name>ABZ</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>

<servlet-mapping>
        <servlet-name>ABZ</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>

spring-context.xml

<context:component-scan base-package="com.ABZ.rest.controller" />
<context:component-scan base-package="com.ABZ.web.controller" />

<bean id="templateResolver"
        class="org.thymeleaf.templateresolver.ServletContextTemplateResolver">
        <property name="prefix" value="/WEB-INF/views/" />
        <property name="suffix" value=".html" />
        <property name="templateMode" value="HTML5" />
        <!-- Template cache is set to false (default is true). -->
        <property name="cacheable" value="false" />
        <property name="characterEncoding" value="UTF-8" />

    </bean>

ABZ-webapp 模块中的 NormalController

package com.ABZ.web.controller;
@controller
@RequestMappig (--)
public class NormalController{

   @RequestMappig (--)
  public String test()
  {
  }
}

ABZ-webservice 模块中的 RestController

package com.ABZ.rest.controller;
@controller
@RequestMappig (--)
public class RestController{

   @RequestMappig (--)
  public String test()
  {
  }
}

上下文路径:localhost:8080/ABZ-webapp/

可以访问 NormalController 但不能访问 RestController 现在从这个控制器路径我想点击我的 'ABZ-webservice' 模块

中的 URL

您已经在 spring-context.xml 定义了组件扫描,它们没问题

<context:component-scan base-package="com.ABZ.rest.controller" />
<context:component-scan base-package="com.ABZ.web.controller" />

现在将您的 类 定义为

ABZ-webapp 模块中的 NormalController

package com.ABZ.web.controller;
@controller
@RequestMappig (value="/web")
public class NormalController{

   @RequestMappig (value="/test")
  public String test()
  {
  }
}

ABZ-webservice 模块中的 RestController

package com.ABZ.rest.controller;
@controller
@RequestMappig (value="/rest")
public class RestController{

   @RequestMappig (value="/test")
  public String test()
  {
  }
}

并让你的测试像

http://localhost:8080/webAppName/web/test

http://localhost:8080/webAppName/rest/test

如果您有任何问题,我可以编辑我的答案。