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进行投诉反馈,一经查实,立即删除!