public interface UserService {
public void login();
}
A实现C接口的功能
@Service("service")
public class UserServiceImpl implements UserService {
@Autowired
UserDao dao;
@Override
public void login() {
System.out.println("false");
}
}
B直接调用A的实现
@Service
public class UserServiceProxyImpl implements UserService {
private UserService service;
public UserServiceProxyImpl() {
service = new UserServiceImpl();
}
@Override
public void login() {
System.out.println("do something before login");
service.login();
System.out.println("do something after login");
}
}
使用如下:
public class StaticProxyTest {
public static void main(String[] args) {
UserService service = new UserServiceProxyImpl();
service.login();
}
}
jdk动态代理
1 编写一个接口
public interface UserService {
public void login();
}
UserService service = (UserService) Proxy.newProxyInstance(
ProxyTest.class.getClassLoader(),new Class[]{UserService.class}, new ServiceInvocationHandler(new UserServiceImpl()));