文章目录
JKD的动态代理1.在src/main下创建Java源文件,创建包com.aop.demo12.在pom.xml内引入依赖3.创建UserDao接口4.创建UserDaoImpl接口5.创建SpringDemo1测试类6.创建MyJdkProxy类实现JKD动态代理7.输出结果
JKD的动态代理
新建项目 项目结构
1.在src/main下创建Java源文件,创建包com.aop.demo1
2.在pom.xml内引入依赖
<dependency>
<groupId>junit
</groupId
>
<artifactId>junit
</artifactId
>
<version>4.12</version
>
<scope>test
</scope
>
</dependency
>
<dependency>
<groupId>org
.junit
.jupiter
</groupId
>
<artifactId>junit
-jupiter
</artifactId
>
<version>RELEASE
</version
>
<scope>compile
</scope
>
</dependency
>
3.创建UserDao接口
package com
.aop
.demo1
;
public interface UserDao {
public void save();
public void upsate();
public void delete();
public void find();
}
4.创建UserDaoImpl接口
package com
.aop
.demo1
;
public class UserDaoImpl implements UserDao{
public void save() {
System
.out
.println("保存用户···");
}
public void upsate() {
System
.out
.println("修改用户···");
}
public void delete() {
System
.out
.println("删除用户···");
}
public void find() {
System
.out
.println("查询用户···");
}
}
5.创建SpringDemo1测试类
package com
.aop
.demo1
;
import org
.junit
.jupiter
.api
.Test
;
public class SpringDemo1 {
@Test
public void demo1(){
UserDao userDao
= new UserDaoImpl();
UserDao proxy
= (UserDao
) new MyJdkProxy(userDao
).createProxy();
proxy
.save();
proxy
.upsate();
proxy
.delete();
proxy
.find();
}
}
6.创建MyJdkProxy类实现JKD动态代理
package com
.aop
.demo1
;
import java
.lang
.reflect
.InvocationHandler
;
import java
.lang
.reflect
.Method
;
import java
.lang
.reflect
.Proxy
;
public class MyJdkProxy implements InvocationHandler {
private UserDao userDao
;
public MyJdkProxy(UserDao userDao
) {
this.userDao
= userDao
;
}
public Object
createProxy(){
Object proxy
= Proxy
.newProxyInstance(userDao
.getClass().getClassLoader(),userDao
.getClass().getInterfaces(),this);
return proxy
;
}
@Override
public Object
invoke(Object proxy
, Method method
, Object
[] args
) throws Throwable
{
if ("save".equals(method
.getName())){
System
.out
.println("权限校验");
return method
.invoke(userDao
,args
);
}
return method
.invoke(userDao
,args
);
}
}
7.输出结果
转载请注明原文地址:https://ipadbbs.8miu.com/read-46184.html