使用mybatis时dao层(public interface SysUserMapper extends BaseMapper<SysUser>)是一个接口,那么它是怎么实例化的呢?其实@FeignClient(value = "service-provider")注解的接口,也是利用这样的原理,动态代理实现的。接口的实例化是通过FactoryBean实现的,FactoryBean是一个工厂Bean,可以生成一个实例,下面看个简单的例子:
1、实现public interface FactoryBean<T> 接口
@Component
public class TestMapperProxyFactoryBean implements FactoryBean<TestMapper> {
@Override
public TestMapper getObject() throws Exception {
//返回对象
Class<?> interfaceType = TestMapper.class;
InvocationHandler handler = new TestMapperInvocationHandler();
TestMapper testMapper = (TestMapper) Proxy.newProxyInstance(interfaceType.getClassLoader(),
new Class[]{interfaceType}, handler);
return testMapper;
}
@Override
public Class<?> getObjectType()