公司项目service层注入的mapper接口是怎么被spring容器扫描到的,我看mapper接口上也没有注解呀
service层代码:
public class IhOrderServiceImpl {
@Autowired
private OrderMapper orderMapper;
OrderMapper是个接口,没有任何用于注入的标签
https://blog.csdn.net/a909301740/article/details/78379720
spring-xxx.xml配置文件中有mapper的包扫描路径
你说的是mybatis吧,mybatis和spring整合包通过动态代理生成mapper实现,然后交给spring管理。
https://blog.csdn.net/bestcxx/article/details/72966768
你贴出来的代码上面应该还有一个@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