Spring学习 9
来源:互联网 发布:女生袜子知乎 编辑:程序博客网 时间:2024/05/01 19:38
AOP部分学习开始
满足需求,只有用户注册了的才能访问所有的方法。如果方法太多,肯定不能一个一个的if判断,所以引入java的动态代理。----前提条件是必须实现接口,不然Proxy就不能用了,解决方案是采用第三方的cglib来实现。
public interface UserService {public void save(String name);public void update(String name, int id);public String getUsername(int id);public void delete(int id);}
public class UserServiceImpl implements UserService {private String username;@Overridepublic void save(String name) {System.out.println("UserServiceImpl 的 save方法" + name);}@Overridepublic void update(String name, int id) {System.out.println("UserServiceImpl 的 update方法" + name);}@Overridepublic String getUsername(int id) {System.out.println("UserServiceImpl 的 getUsername方法" + id);return null;}@Overridepublic void delete(int id) {System.out.println("UserServiceImpl 的 delete方法" + id);}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}}
public class RuiProxyFactory<T> implements InvocationHandler{public T targetObject;@SuppressWarnings("unchecked")public T createProxyInstance(T targetObject) {this.targetObject = targetObject;return (T) Proxy.newProxyInstance(targetObject.getClass().getClassLoader(), targetObject.getClass().getInterfaces(),<strong style="background-color: rgb(153, 255, 153);">this</strong>);}@Overridepublic Object invoke(Object proxy, Method method, Object[] args)throws Throwable {UserServiceImpl service = (UserServiceImpl) targetObject;Object result = null;if (service.getUsername() != null) {result = method.invoke(targetObject, args);}return result;}}
public class UserServiceTest {@Testpublic void testProxy() {RuiProxyFactory<UserServiceImpl> proxy = new RuiProxyFactory<>();UserServiceImpl impl = new UserServiceImpl();impl.setUsername("xxxxx"); //这句话是关键点,直接决定了是否有权限UserService service = (UserService) proxy.createProxyInstance(impl);service.save("xxxx");}}
0 0
- Spring学习笔记9
- Spring学习 9
- spring学习笔记(9)--@Resource
- Spring 学习笔记(9-30)
- Spring学习【Spring概述】
- spring学习--spring profile
- Spring学习
- 学习spring
- 学习Spring
- spring学习
- Spring学习
- spring学习
- spring 学习
- spring学习
- Spring学习
- spring学习
- Spring学习
- Spring学习
- iOS平台(移动平台)架构问题
- HDU2519 新生晚会【水题】【组合数】
- 专车:一边点赞,一边釜底抽薪;前路难探,内部利益出现分化
- 错误隐藏学习手记(一)
- Spring学习 8
- Spring学习 9
- 年终大学习之MySQL数据库优化学习笔记(五)
- 2 Linear Regression, Gradient descent
- 语义化版本2.0.0
- WinSock嗅探虚拟主机拿站取webshell
- 第一周工作总结及计划表
- 如何打造不怕被嗅探的3389登陆
- 冬令营第七天
- 【BZOJ 1064】 [Noi2008]假面舞会