spring的注入问题请教大神 5C

公司项目service层注入的mapper接口是怎么被spring容器扫描到的,我看mapper接口上也没有注解呀
service层代码:
public class IhOrderServiceImpl {
@Autowired
private OrderMapper orderMapper;

    OrderMapper是个接口,没有任何用于注入的标签

8个回答

spring-xxx.xml配置文件中有mapper的包扫描路径

你说的是mybatis吧,mybatis和spring整合包通过动态代理生成mapper实现,然后交给spring管理。

你贴出来的代码上面应该还有一个@Service注解, 这样说吧,@Service注解的作用是告诉Spring把这个类装进Spring容器里,@Autowired的意思是告诉Spring注入它标记的类。这样做的目的是,当你调用service的时候,dao层的mapper实例就能被当成serviceimp的依赖引入了。实现了控制层和数据层的链接。
纯手打的~~~~如果还有不清楚的可以问我。

spring的service层有注入的,扫描的有那个包的

以我的项目为例啊,首先看Spring的全局配置文件
1、spring-config.xml(你的名字可能是application-context.xml)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
......此处省略
>
    <!-- service注解扫描 -->
    <context:component-scan base-package="com.zduod.manageweb.controller,com.zduod.manage,com.zduod.platform,com.zduod.pay,com.zduod.user">
        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>
    <!-- 引入SPRING配置文件  -->
    <import resource="classpath:spring/spring-druid.xml"/>

</beans>

在spring-contig.xml文件中引入数据库连接池druid的配置,
2、下面看spring-druid.xml的配置

 <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
......此处省略
>
    <bean id="defaultDataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">  
         <!-- 数据库基本信息配置 -->
         <property name="url" value="jdbc:mysql://127.0.0.1:3306/zdd" />  
         <property name="username" value="root" />  
         <property name="password" value="root" />
         <property name="driverClassName" value="com.mysql.jdbc.Driver" />  
         ...此处配置省略
    </bean> 
    ...此处配置省略
    <!-- MyBatis配置 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="defaultDataSource" />                                                                                                  
        <property name="typeAliasesPackage" value="com.zduod.user.face.entity,com.zduod.pay.face.entity,com.zduod.manage.face.entity,com.zduod.platform.face.entity" />
        <!-- 此处扫描了所有mapperDao对应的mapper.xml文件 -->
        <property name="mapperLocations" value="classpath*:*/*Mapper.xml" />
        <!-- 此处引入mybatis配置文件spring-mybatis.xml -->
        <property name="configLocation" value="classpath:spring/spring-mybatis.xml" />
    </bean>
    <!-- 扫描basePackage下所有以@MyBatisRepository标识的 接口 
    此处扫描了所有的mapperDao
    -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.zduod.manage.dao,com.zduod.pay.dao,com.zduod.user.dao,com.zduod.platform.dao" />
        <property name="annotationClass" value="com.zduod.core.annotation.MyBatisDao" />
    </bean>
</beans>

3、这是spring-mybatis.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration 
    PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 
    "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <properties>
        <property name="dialect" value="mysql" />
        <property name="pageSqlId" value=".*Page$" />
    </properties>
    <settings>
    ...此处配置省略
    </settings>
    <!--plugins>
        <plugin interceptor="com.dql.lms.base.page.PageInterceptor">
        </plugin>
    </plugins-->
</configuration>

4、在Spring的配置文件中是有配置扫描dao及mapper的。
这里是在数据库连接池druid.xml中配置扫描dao及mapper

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!