96SEO 2026-02-19 18:49 16
继上两篇文章狮子总结了Spring中IOC的底层原理、基本使用以及注解使用。

今天来细说一下Spring的另外一个重要原理——面向切面编程Aspect
Programming即我们常说的AOP。
它是实现功能统一维护的一种技术它将业务逻辑的各个部分进行隔离使开发人员在编写业务逻辑时可以专心于核心业务从而提高了开发效率。
能够将那些与业务无关却为业务模块所共同调用的逻辑或责任(如事务处理、日志管理、权限控制等)封装起来便于减少系统的重复代码降低模块间的耦合度并有利于未来的可扩展性和可维护性。
SpringAOP是基于动态代理的如果要代理的对象实现了某个接口那么SpringAOP就会使用JDK动态代理去创建代理对象而对于没有实现接口的对象就无法使用JDK动态代理转而使用CGlib动态代理生成一个被代理对象的子类来作为代理。
名称说明连接点Joinpoint指能被拦截到的点在Spring中只有方法能被拦截切点Pointcut指要对哪些连接点进行拦截即被增强的方法。
通知Advice指拦截后要做的事情即切点被拦截后执行的方法切面Aspect切点通知称为切面目标Target被代理的对象代理Proxy代理对象织入Weaving生成代理对象的过程
现在来简单了解一下AOP的使用SpringAOP中已经集成了AspectJ框架应该是Java生态中最为完整的AOP框架了我们使用该框架来实现一个简易的AOP功能。
dependencygroupIdorg.springframework/groupIdartifactIdspring-context/artifactIdversion5.3.12/version
dependencygroupIdorg.aspectj/groupIdartifactIdaspectjweaver/artifactIdversion1.8.7/version
dependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.12/versionscopetest/scope
add(){System.out.println(用户新增);||}public
delete(){System.out.println(用户删除);}public
update(){System.out.println(用户修改);}
xmlnshttp://www.springframework.org/schema/beans
xmlns:contexthttp://www.springframework.org/schema/context
xmlns:aophttp://www.springframework.org/schema/aop
xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance
xsi:schemaLocationhttp://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
classcom.jackie.advice.MyAspectAdvice/bean
expressionexecution(*com.jackie.dao.UserDao.*(..))/
pointcut-refmyPointcut//aop:aspect/aop:config
ClassPathXmlApplicationContext(bean.xml);UserDao
(UserDao)ac.getBean(userDao);userDao.add();}Testpublic
testDelete(){ApplicationContext
ClassPathXmlApplicationContext(bean.xml);UserDao
(UserDao)ac.getBean(userDao);userDao.delete();}Testpublic
testUpdate(){ApplicationContext
ClassPathXmlApplicationContext(bean.xml);UserDao
(UserDao)ac.getBean(userDao);userDao.update();}
}通过调用就会发现每个方法都会打印语句打印日志...。
这就是AOP的使用入门。
我们通过上面的案例会发现这里写了一个后置通知那么有哪些类型的通知呢我们来看看
通知类型描述前置通知在方法执行前添加功能后置通知在方法正常执行后添加功能异常通知在方法抛出异常后添加功能最终通知无论方法是否抛出异常都会执行该通知环绕通知在方法执行前后添加功能
通过构造MyAspectAdvice通知类在里面编写通知方法。
joinPoint.getSignature().getName());System.out.println(目标对象
joinPoint.getTarget());System.out.println(打印日志
joinPoint.getSignature().getName()
{System.out.println(前置通知...);}//
{System.out.println(异常通知...);System.err.println(ex.getMessage());}//
{System.out.println(环绕前);Object
执行方法System.out.println(环绕后);return
com.jackie.dao.UserDao.*(..))/!--
pointcut-refmyPointcut/aop:before!--
pointcut-refmyPointcut/aop:after!--
pointcut-refmyPointcut/aop:around/aop:aspect
今天总结了AOP的基本使用方法。
通过使用AspectJ框架来实现AOP的基本用法以及介绍了该框架的几种通知类型。
今天的分享到这里希望您喜欢
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback