application.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
<context:annotation-config/>
<context:component-scan base-package="demo"/>
<aop:aspectj-autoproxy/>
<aop:config>
<aop:pointcut expression="execution( * demo..*.*(..))" id="myMethod"/>
<aop:aspect ref="interceptor">
<aop:around method="around" pointcut-ref="myMethod"/>
</aop:aspect>
</aop:config>
</beans>
Interceptor.java
package demo;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;
/**
*
*声明此类为切面类
*
*/
//@Aspect
@Component("interceptor")
public class Interceptor {
/**
* 引用声明的切入点,符合切入点规则的方法将会被包围
*
*/
//@Around("myMethod()")
public void around(ProceedingJoinPoint pjp){
System.out.println("Interceptor......before......");
try {
/**
* 执行符合切入点规则的方法
*/
pjp.proceed();
} catch (Throwable e) {
e.printStackTrace();
}
System.out.println("Interceptor......after......");
}
/**
* 声明一个切入点,切入点名称为方法名
* execution表达的意思为:
* 除私有方法之外的,在demo层级以及其任意子层级下的,返回任意类型的,任意参数个数的所有方法
*/
//@Pointcut("execution( * demo..*.*(..))")
public void myMethod(){
}
}
CCC.java
package demo.subdemo;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.stereotype.Component;
@Component("ccc")
public class CCC {
public static void main(String[] args) {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
new String[] { "application.xml" });
CCC ccc=(CCC)context.getBean("ccc");
ccc.f();
}
protected int f(){
System.out.println("CCC........f( )..........");
return 1000;
}
}
分享到:
相关推荐
标题 "SpringXML方式实现AOP demo" 涉及到的是使用Spring框架通过XML配置来实现面向切面编程(AOP)的知识。面向切面编程是Spring框架的一个核心特性,它允许开发者在不修改原有业务代码的情况下,对系统进行横切...
Spring AOP(面向切面编程)是Spring框架的重要组成部分,它允许程序员在不修改源代码的情况下,通过在关键点(切点)插入拦截器(通知)来增强功能,实现横切关注点,如日志、事务管理等。XML配置是Spring AOP早期...
完成以上步骤后,你就可以在`springaopxml`项目中运行和测试AOP配置了。这个示例会帮助你理解如何在Spring框架中使用XML配置实现AOP,并提供了一种在不修改目标类代码的情况下,优雅地添加额外功能的方法。记住,...
建筑工地扬尘治理与文明施工检查表.docx
基于java的个性化旅游攻略定制系统设计与实现.docx
数学建模培训资料 数学建模实战题目真题答案解析解题过程&论文报告 导弹追击模型的建立与求解 共6页.pdf
基础课程辅助教学-JAVA-基于springBoot程序设计基础课程辅助教学系统设计与实现
适用人群:大学生 自学者 使用场景:大学生毕设 自学者练手项目 学习与交流 其它说明:部分资源来源网络及开源社区、仅供参考与学习、不可商用、若有侵权请联系删除! 内容概要:用springmvc实现的校园选课管理系统
java课程期末考试
C++ Vigenère 密码(解密代码)
工程研究中心申报基本情况一览表.docx
Vigenère 密码(加密代码)
密码学AES算法源代码,密码学实验
基于java的百货中心供应链管理系统设计与实现.docx
环境说明:开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7 数据库工具:Navicat 开发软件:eclipse/myeclipse/idea Maven包:Maven 浏览器:谷歌浏览器。 项目均可完美运行
【资源说明】 大数据毕业设计 基于Python+Spark机器学习天气预测系统详细文档+全部资料.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
购物系统 微信小程序+PHP毕业设计 源码+数据库+论文+启动教程
BIM 人才培养的框架和方法 相关的标准
源项目文件
ActiveMQ消息中间件的测试案例