javascript
ITCAST视频-Spring学习笔记(使用JDK中的Proxy技术实现AOP功能)
感謝ITCAST發布的免費視頻。
?
AOP—代理對象
?
1.? 攔截所有業務方法
2.? 判斷用戶是否有權限,由權限就允許它執行業務方法,沒有權限不允許執行業務方法。
?
代理對象創建由兩種:靜態代理,動態代理
應用的條件是目標對象必須實現接口
?
橫切性關注點
Source:
public interface PersonService {
?????? public void save(String name);
?????? public void update(String name, Integer personid);
?????? public String getPersonName(Integer personid);
}
?
public class PersonServiceBean implements PersonService {
?????? private String user = null;
??????
?????? public PersonServiceBean() {
?????????????
?????? }
??????
?????? public PersonServiceBean(String user) {
????????????? this.user = user;
?????? }
??????
?????? public String getPersonName(Integer personid) {
????????????? // TODO Auto-generated method stub
????????????? System.out.println("I'm getPersonName.");
????????????? return "XXX";
?????? }
?
?????? public void save(String name) {
????????????? // TODO Auto-generated method stub
????????????? System.out.println("I'm save.");
?????? }
?
?????? public void update(String name, Integer personid) {
????????????? // TODO Auto-generated method stub
????????????? System.out.println("I'm update.");
?????? }
?
?????? public String getUser() {
????????????? return user;
?????? }
?
}
?
public class JDKProxyFactory implements InvocationHandler {
?????? private Object targetObject;
??????
?????? public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
????????????? // TODO Auto-generated method stub
????????????? PersonServiceBean bean = (PersonServiceBean) this.targetObject;
????????????? Object result = null;
?????????????
????????????? if (bean.getUser() != null) {
???????????????????? result = method.invoke(targetObject, args);
????????????? }
?????????????
????????????? return result;
?????? }
??????
?????? public Object createProxyInstance(Object targetObject) {
????????????? this.targetObject = targetObject;
?????????????
????????????? return Proxy.newProxyInstance(this.targetObject.getClass().getClassLoader(),
??????????????????????????? this.targetObject.getClass().getInterfaces(), this);
?????? }
}
?
public class AOPTest {
?????? @Test
?????? public void proxyTest() {
????????????? JDKProxyFactory factory = new JDKProxyFactory();
????????????? PersonService service = (PersonService) factory.createProxyInstance(new PersonServiceBean());
?????????????
????????????? service.getPersonName(1);
?????? }
}
轉載于:https://www.cnblogs.com/tongzhiyong/archive/2009/02/09/1387067.html
總結
以上是生活随笔為你收集整理的ITCAST视频-Spring学习笔记(使用JDK中的Proxy技术实现AOP功能)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ctrl+Enter 自动加上 .com
- 下一篇: 30 Days of .NET [Win