如果接口在.jar

时间:2017-03-10 16:01:12

标签: java spring spring-mvc mybatis spring-mybatis

我在Spring 3.2.0Mybatis 3.3.0

的旧项目中使用Mybatis Spring 1.2.3.

我有几个使用这项技术的项目,他们需要在库中添加类似的新代码,这样我才能与外部系统进行交互,在此交互过程中我需要在数据库中调用几个方法。代码。

我创建了一个界面并将其放在一个包中,比如说:

com.mycompany.myapp.dao.MyNewService

该接口有一些方法。所有这些都在{em}相同的包路径中的Mybatis映射文件MyNewService.xml中定义。

我创建了所有这些代码的.jar文件。

在我的主应用程序中,我为此.jar文件添加了一个依赖项,它最终在WEB-INF\lib\MyHelpers.jar

在该应用程序中,我有一个根应用程序上下文spring文件,我尝试使用mybatis MapperScannerConfigurer通过以下方式查找此新bean /服务:

<!--scan for mappers and let them be autowired -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="com.mycompany.myapp.dao" />
    <property name="sqlSessionFactoryBeanName"
      value="sqlSessionFactory" />
</bean>

当我运行此代码时,它似乎无法在我知道位于WEB-INF\lib\MyHelpers.jar的程序包路径中找到此服务。

应用程序在启动时会发出警告:

WARN (ClassPathMapperScanner.java:167) - No MyBatis mapper was 
found in '[com.mycompany.myapp.dao]' package. 
Please check your configuration.

代码稍后在依赖注入过程中失败,其中包含大量的堆栈跟踪,实际上是:

  

2017-03-08 15:38:39,625 [[ACTIVE] ExecuteThread:'0'表示队列:   'weblogic.kernel.Default(自我调整)']错误   (org.springframework.web.servlet.DispatcherServlet:466) - 上下文   初始化失败

     

org.springframework.beans.factory.BeanCreationException:错误   创建名为'orderDetailsController'的bean:注入   自动连接依赖失败;嵌套异常是   org.springframework.beans.factory.BeanCreationException:不能   autowire字段:private com.mycompany.myapp.dao.MyNewService   com.mycompany.otherapp.controller.OrderDetailsController.myNewService   ;嵌套异常是   org.springframework.beans.factory.NoSuchBeanDefinitionException:没有   匹配找到[com.mycompany.myapp.dao.MyNewService]类型的bean   对于依赖:预计至少有1个bean有资格作为autowire   这种依赖的候选人。依赖注释:   {@ org.springframework.beans.factory.annotation.Autowired(所需=真)}

如果我深入研究Mybatis代码,当它使用一些ResourceResolver代码时,它根本无法从.jar中的包路径中找到资源。 IF 我直接将代码移到我的项目中而不是添加.jar依赖项,代码运行正常而没有错误。

当然,问题是我必须在六个项目中放置相同的代码,所以我想我会在这个.jar文件中使用它并使用MapperScannerConfigurer。我们在所有项目中使用它,但所有.xml在部署时都在应用程序WEB-INF\classes内,在WEB-INF\lib内的.jar文件中

任何想法如何实现这一目标?总之,它类似于:

  1. 根据Model.jar接口和.xml映射文件制作名为Mybatis的文件
  2. 将此添加为WEB-INF\lib
  3. 中显示的依赖项
  4. 使用我上面的语法配置主spring applicationContext文件。
  5. 如果您需要更多说明,我当然可以添加它。

0 个答案:

没有答案