java spring核心技术AOP面向切面编程图文并茂包含例子demo
2024-01-03 14:53:33
    		base
- Aspect-oriented programming
- 面向切面的程序设计
- 用于将那些与业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取并封装为一个可重用的模块,这个模块被命名为“切面”(Aspect)
- 场景: 权限认证,日志和事务处理.

demo
基本背景
// 背景: 1. 模拟数据库操作增删改查  2. 每次操作之前新增权限校验,操作之后新增日志记录 
// spring06-aop1/src
// ├── main
// │   ├── java
// │   │   └── com.ah.service
// │   │       ├── User.java
// │   │       └── UserServiceImpl.java
// │   └── resources
// └── test
//     └── java
//         └── Test.java
// User.java 定义接口
package com.ah.service;
public interface User {
   
    void add(int id, String name);
    void delete(int id);
    void update(int id, String name);
    void query(int id);
}
// UserServiceImpl.java 实现类  
package com.ah.service;
public class UserServiceImpl implements User{
   
    public void add(int id, String name) {
   
        System.out.println("模拟add...");
    }
    public void delete(int id) {
   
        System.out.println("模拟delete...");
    }
    public void update(int id, String name) {
   
        System.out.println("模拟update...");
    }
    public void query(int id) {
   
        System.out.println("模拟query...");
    }
}
// Test.java 调用类的方法
import com.ah.service.UserServiceImpl;
public class Test {
   
    public static void main(String[] args) {
   
        UserServiceImpl u = new UserServiceImpl();
        u.add(1,"张三");
        u.delete(1);
        u.update(1,"李四");
        u.query(1);
    }
}
// 效果
// 模拟add...
// 模拟delete...
// 模拟update...
// 模拟query...
jdk 动态代理
// 需求: 每次操作之前新增权限校验,操作之后新增日志记录 
// 实现: 通过 jdk 动态代理实现
// JDK 动态代理 是基于JDK 不需要额外引入包
// User.java 定义接口 同上
// UserServiceImpl.java 实现类  同上
// Test.java 调用类的方法
import com.ah.service.User;
import c
    			文章来源:https://blog.csdn.net/qubes/article/details/135362461
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
    	本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!