@Mapper
public interface DeptMapper {
Dept getById(Integer id);
}
问:这段代码是把这个接口注入到spring的bean容器当中去了,但是spring的bean容器不是存的实例化对象吗?
答:
在Spring框架中,将一个类(或接口)注入到Spring的容器中,即将其声明为一个Bean。这样,Spring容器会负责创建该Bean的实例,并将其管理起来。
对于@Mapper注解的接口,它通常是使用MyBatis框架来进行数据库操作的一种方式。当您在Spring Boot应用程序中使用@Mapper注解并将接口声明为Bean时,实际上是将MyBatis的Mapper接口交给Spring容器管理。
尽管MyBatis的Mapper接口不需要实现类,但是在运行时,Spring会针对这些带有@Mapper注解的接口生成代理对象,并将其纳入Spring的IOC容器中进行管理。这样,其他的组件可以通过依赖注入的方式使用这些Mapper接口,而不关心具体的实现细节。
通过将DeptMapper接口声明为Spring Bean,您可以在其他组件中使用DeptMapper进行注入,类似于以下示例:
@Service
public class DeptService {
private final DeptMapper deptMapper;
public DeptService(DeptMapper deptMapper) {
this.deptMapper = deptMapper;
}
// 可以在这里使用deptMapper进行数据库操作
}
在上述示例中,DeptService通过构造函数注入了DeptMapper。Spring会自动将DeptMapper的代理对象注入到DeptService中,以便在DeptService中可以使用deptMapper执行数据库操作。
因此,虽然Spring的容器存储的是Bean的实例化对象,但在某些情况下,这些对象是通过代理模式动态生成的,以便提供特定的功能,如MyBatis的Mapper接口。
标签:DeptMapper,Mapper,deptMapper,Spring,接口,Bean,springboot2,注解 From: https://www.cnblogs.com/gagaya2/p/17822668.html