为什么扫描mapper包的时候使用< bean >标签而不是用< context:component-scan > 扫描
<!-- 扫描mapper -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- 扫描mapper包 -->
<property name="basePackage" value="com.crm.settings.mapper"/>
</bean>
而controller类使用< context:component-scan > 扫描而不使用< bean >标签
<!-- 设置表示层包扫描器 -->
<context:component-scan base-package="com.mimissm.controller"></context:component-scan>
实际@Component也是使用注解@Bean装配进Spring IOC里。标签< context:component-scan > 扫描前提是类上方有注解@Component,一个实体类的使用注解@Component时候会把类里面的方法自动装配注解@Bean,而注解@Bean实际也是自动帮我们书写< bean >标签,减少在xml文件写< bean >语句次数。但是@Component需要在类的上方写注解@Component才能被xml里的标签< context:component-scan >扫描到。
如果没有加@Component,里面的方法无法进行自动装配Bean注解,无法被装配进Spring里面。故这也是mapper包的实体类xml文件无法使用< context:component-scan > 扫描原因,因为xml文件中不能使用@Component注解,故只能手动装配进Bean里。
在无法修改代码的情况下,想要被spring管理就只能通过自己手写< bean >语句进行注入spring框架内。
以上是我个人查阅了各种帖子,根据自己理解所写。
如果有不足或错误的地方,希望可以指出来,大家一起学习。