Spring编写代理=》AOP(半自动化)
Spring中的aop依赖,是spring-aop
具体步骤
- 目标类:UserService/UserServiceImpl
- 切面类:MyLogAspect --- 需要实现MethodInterceptor接口
| package com.bboy.aspect; |
| |
| import org.aopalliance.intercept.MethodInterceptor; |
| import org.aopalliance.intercept.MethodInvocation; |
| |
| |
| |
| |
| |
| |
| public class MyLogAspect implements MethodInterceptor { |
| @Override |
| public Object invoke(MethodInvocation invocation) throws Throwable { |
| |
| |
| |
| String method_name = invocation.getMethod().getName(); |
| |
| |
| System.out.println(method_name+"======>方法开始执行"+System.currentTimeMillis()); |
| |
| Object obj = invocation.proceed(); |
| |
| System.out.println(method_name+"======>方法执行结束"+System.currentTimeMillis()); |
| return obj; |
| } |
| } |
| |
- 代理类(spring容器进行操作)
| <?xml version="1.0" encoding="UTF-8"?> |
| <beans xmlns="http://www.springframework.org/schema/beans" |
| xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> |
| |
| |
| |
| |
| <bean id="userService" class="com.bboy.service.impl.UserServiceImpl"/> |
| |
| <bean id="myLogAspect" class="com.bboy.aspect.MyLogAspect"/> |
| |
| |
| |
| |
| |
| |
| |
| |
| <bean id="proxyUserService" class="org.springframework.aop.framework.ProxyFactoryBean"> |
| <property name="interfaces" value="com.bboy.service.UserService"/> |
| <property name="target" ref="userService"/> |
| <property name="interceptorNames" value="myLogAspect"/> |
| <property name="optimize" value="true"/> |
| </bean> |
| </beans> |
- 测试类(spring容器进行操作)
| package com.bboy.dao; |
| |
| import com.bboy.service.UserService; |
| import org.springframework.context.ApplicationContext; |
| import org.springframework.context.support.ClassPathXmlApplicationContext; |
| |
| |
| |
| |
| |
| |
| public class Demo { |
| public static void main(String[] args) { |
| |
| ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); |
| |
| UserService userService = (UserService) context.getBean("proxyUserService"); |
| userService.updateUser(); |
| userService.deleteUser(); |
| userService.addUser(); |
| } |
| } |
| |
运行结果展示:

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端