1 代理 (用来进行类的增强 和service实现类一样都继承相同的接口)
静态代理---------创建一个代理类,运行之前就已经确定了代理某个service实现类
动态代理---------不需要创建代理类,通过工厂产生代理对象,在运行时才生成代理
jdk动态代理:target=Proxy.newProxyInstance(target.getClass().getClassLoader()目标类加载器,
目标类实现的接口target.getClass().getInterfaces(),
new InvocationHandler(){
public Object invoke(Object proxy,Method method 目标方法,Objects[] args目标方法参数){
method.invoke(target 这个引用外部类的变量必须是final修饰的,args);}
}内部匿名类,增强在这里面完成)
CGLib动态代理(code generation lib):jdk动态代理要求目标类实现相同的接口,若目标不存在接口,则无法使用该方式实现。GBLib不需要实现接口,底层是生成一个目标类的子类来增强,所以目标类必须可继承,不能用final修饰。
2反射