欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

java 代理和aop

吉茹定1年前8瀏覽0評論

Java代理和AOP是Java編程中非常重要的兩個概念。Java代理,簡單理解可以是利用代理人來完成一些需要做的任務;AOP是面向切面編程的概念,是一種基于注解的編程模式。

Java代理的實現方式有兩種:靜態代理和動態代理。

public interface UserService{
void addUser();
}
public class UserServiceImpl implements UserService{
@Override
public void addUser() {
//添加用戶的業務邏輯
}
}
//靜態代理
public class UserServiceProxy implements UserService{
private UserService userService;
public UserServiceProxy(UserService userService) {
this.userService = userService;
}
@Override
public void addUser() {
System.out.println("添加用戶前的操作");
userService.addUser();
System.out.println("添加用戶后的操作");
}
}
//動態代理
public class DynamicProxy implements InvocationHandler {
private Object object;
public DynamicProxy(Object object) {
this.object = object;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
//前置操作
Object result = method.invoke(object, args);
//后置操作
return result;
}
}

AOP是一種編程思想,它允許將橫切關注點(例如日志記錄和事務管理)從業務主體中分離出來,可以通過注解和切面將這些代碼織入到原本的方法中。

public class UserController {
@OperationLog(module="用戶管理", operation="添加用戶")
@Transactional
public void addUser() {
//添加用戶的業務邏輯
}
}
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface OperationLog {
String module();
String operation();
}
@Aspect
@Component
public class LogAspect {
@Around("@annotation(operationLog)")
public Object operationLog(ProceedingJoinPoint joinPoint, OperationLog operationLog) throws Throwable {
System.out.println("模塊:" + operationLog.module());
System.out.println("操作:" + operationLog.operation());
Object result = joinPoint.proceed();
System.out.println("返回值:" + result);
return result;
}
}

以上就是Java代理和AOP的簡要介紹和實現代碼。