我们大家都知道,mybatis的mapper接口,我们并没有手动编写实现代码,但仍然能在程序中注入到Spring容器并使用。这里面就用到了动态代理的原理。
下面,我也编写一个接口,代码未给出实现,通过动态代理进行接口的默认实现,通过FactoryBean方式注入到容器中(当然,我们也可以通过在一个用@Configuration声明的配置类中,通过@Bean注解,手动编写该实例的生成过程)。下面是代码实例。
代码结构如下图所示:
一、首先创建一个maven工程,引入相关依赖,这里我直接用的Springboot,编写一个TestService接口
package com.company.service;
import java.util.List;
public interface TestService {
List<String> getList(String code, String name);
}
二、创建一个ServiceInvocationHandler类,并实现invocationHandler接口。注意:这个类的invoke方法,我们可以在这个方法里面获取到接口被调用时的方法、参数以及方法的返回值等,并编写自定义方法实现的业务逻辑等。
package com.company.