静态代理
2.动态代理
JDK 动态代理
CGLIB 动态代理 — mybatis
3.代理的作用,方法增强。就是可以在方法执行前后进行指定逻辑操作。
1.接口
package com.lt.test.service;
public interface UserService { void func();
void func2(); }
2.目标类实现
package com.lt.test.service.impl;
import com.lt.test.service.UserService;
public class UserServiceImpl implements UserService { @Override public void func() { System.out.println("目标类方法1"); }
}
3..静态代理类:需要实现接口,不容易扩展,实现简单。 原理:将目标类对象传进来。 外部就可以通过代理类对象来调用目标类对象了
package com.lt.test.staticproxy;
import com.lt.test.service.UserService;
public class StaticUserService implements UserService {
private UserService userService;
public StaticUserService(UserService userService){ this.userService = userService; }
@Override public void func() { System.out.println("before func"); userService.func(); System.out.println("after func"); }
@Override public void func2() { System.out.println("before func2"); userService.func2(); System.out.println("after func2"); } }
4.使用代理类调用目标类
package com.lt.test;
import com.lt.test.service.Animal; import com.lt.test.service.UserService; import com.lt.test.service.impl.AniamlImpl; import com.lt.test.service.impl.UserServiceImpl; import com.lt.test.staticproxy.AnimalStaticProxy; import com.lt.test.staticproxy.StaticUserService;
public class demo2 { public static void main(String[] args) { //创建静态代理对象 先创建目标对象,把对象传给代理对象 UserService userService = new UserServiceImpl(); StaticUserService staticUserService = new StaticUserService(userService); //使用代理对象访问目标对象方法 staticUserService.func(); staticUserService.func2();
} }
神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试