zoukankan      html  css  js  c++  java
  • 记一次包扫描的犯错

    很长时间对于无法注入依赖的问题很是苦恼,对于类似的问题我做出如下总结:

    1.对于分布式架构来说

      如果提示无法注入依赖,就考虑没有引用哪个工程,对于war包来说要全部引用,举个栗子:

        

    <?xml version="1.0"?>
    <project
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
        xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>tms</groupId>
            <artifactId>tms-parent</artifactId>
            <version>1.0.0</version>
        </parent>
        <artifactId>tms-yinliu</artifactId>
        <name>tms-yinliu</name>
        <dependencies>
            <dependency>
                <artifactId>tms-util</artifactId>
                <groupId>tms</groupId>
                <version>1.0.0</version>
            </dependency>
            <dependency>
                <artifactId>tms-api</artifactId>
                <groupId>tms</groupId>
                <version>1.0.0</version>
            </dependency>
        </dependencies>
    </project>

    对于这样的没有war包的分布式,你只需引用你所需要的工程。

     

      对于war包来说要全部引用:

    <?xml version="1.0"?>
    <project
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
        xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>tms</groupId>
            <artifactId>tms-parent</artifactId>
            <version>1.0.0</version>
        </parent>
        <artifactId>tms-yinliu-war</artifactId>
        <packaging>war</packaging>
        <name>tms-yinliu-war</name>
        <dependencies>
            <dependency>
                <artifactId>tms-number</artifactId>
                <groupId>tms</groupId>
                <version>1.0.0</version>
            </dependency>
            <dependency>
                <artifactId>tms-order</artifactId>
                <groupId>tms</groupId>
                <version>1.0.0</version>
            </dependency>
            <dependency>
                <artifactId>tms-user</artifactId>
                <groupId>tms</groupId>
                <version>1.0.0</version>
            </dependency>
            <dependency>
                <artifactId>tms-info</artifactId>
                <groupId>tms</groupId>
                <version>1.0.0</version>
            </dependency>
            <dependency>
                <artifactId>tms-tk</artifactId>
                <groupId>tms</groupId>
                <version>1.0.0</version>
            </dependency>
            <dependency>
                <artifactId>tms-data</artifactId>
                <groupId>tms</groupId>
                <version>1.0.0</version>
            </dependency>
            <dependency>
                <artifactId>tms-mobile</artifactId>
                <groupId>tms</groupId>
                <version>1.0.0</version>
            </dependency>
            <dependency>
                <artifactId>tms-contract</artifactId>
                <groupId>tms</groupId>
                <version>1.0.0</version>
            </dependency>
            <dependency>
                <artifactId>tms-weixin</artifactId>
                <groupId>tms</groupId>
                <version>1.0.0</version>
            </dependency>
            <dependency>
                <artifactId>tms-product</artifactId>
                <groupId>tms</groupId>
                <version>1.0.0</version>
            </dependency>
            <dependency>
                <artifactId>tms-company</artifactId>
                <groupId>tms</groupId>
                <version>1.0.0</version>
            </dependency>
            <dependency>
                <artifactId>tms-yinliu</artifactId>
                <groupId>tms</groupId>
                <version>1.0.0</version>
            </dependency>
            <dependency>
                <artifactId>tms-business</artifactId>
                <groupId>tms</groupId>
                <version>1.0.0</version>
            </dependency>
        </dependencies>
    </project>

    2.对于某一个层面(controller,service,dao,mapper)来说,无法注入依赖:

    1.   检查每个层面有没有加注解,@Controller,@Service,@Repository
    2.   检查有没有添加包扫描
          <!-- 注解驱动 -->
          <mvc:annotation-driven/>
          <!-- 自动扫描的包 -->
          <context:component-scan base-package="com.pyq.weixin"/>  

      3.   特别对于mapper层,需要注意一个问题,mybatis中对应的mapper接口无法注入,原因可能是没有扫描到此mapper

     <!--错误的 -->
        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
            <property name="basePackage" value="com.pyq.weixin.mapper" />
            <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
        </bean>
    
        <!-- 正确的扫描mapper(dao)包 -->
        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
            <property name="basePackage" value="com.pyq.**.mapper" />
            <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
        </bean>

        由于一个项目中的mapper层不止一个,所以需要扫描到所有的mapper层,需要用到通配符 com.pyq.**.mapper指的是pyq下面所有的mapper层

  • 相关阅读:
    [Swift]LeetCode239. 滑动窗口最大值 | Sliding Window Maximum
    [Swift]LeetCode238. 除自身以外数组的乘积 | Product of Array Except Self
    [Java]LeetCode237. 删除链表中的节点 | Delete Node in a Linked List
    [Swift]LeetCode236. 二叉树的最近公共祖先 | Lowest Common Ancestor of a Binary Tree
    [Swift]LeetCode235. 二叉搜索树的最近公共祖先 | Lowest Common Ancestor of a Binary Search Tree
    [Swift]LeetCode233. 数字1的个数 | Number of Digit One
    [Swift]LeetCode232. 用栈实现队列 | Implement Queue using Stacks
    [Swift]LeetCode230. 二叉搜索树中第K小的元素 | Kth Smallest Element in a BST
    [Swift]LeetCode229. 求众数 II | Majority Element II
    [Swift]LeetCode228. 汇总区间 | Summary Ranges
  • 原文地址:https://www.cnblogs.com/pangyangqi/p/8875577.html
Copyright © 2011-2022 走看看