Spring Aop XML
来源:互联网 发布:ubuntu安装apache php 编辑:程序博客网 时间:2024/05/10 20:30
applicationContext.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:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"><context:component-scan base-package="com.mth" /><!--XML配置 拦截类--><bean id="logInterceptor" class="com.mth.aop.LogInterceptor"></bean><!--第一种写法--><!--<aop:config>--><!-- 在aspect外配置的point是全局切入点--><!--<aop:pointcut expression="" id="p2" />--><!--定义一个切面--><!--<aop:aspect id="a1" ref="logInterceptor">--><!--定义一个切入点 在aspect里面配置的只有自己可以使用--><!--<aop:pointcut expression="execution(public void com.mth.impl..*.*(..))"--><!--id="p1" />--><!--<aop:before pointcut-ref="p1" method="before" />--><!--<aop:after pointcut-ref="p1" method="afterMethod" />--><!--</aop:aspect>--><!--</aop:config>--><!--第二种写法 直接指定pointcut--><aop:config><aop:aspect id="a1" ref="logInterceptor"><aop:before method="before" pointcut="execution(public void com.mth.impl..*.*(..))"/></aop:aspect></aop:config></beans>
LogInterceptor 类:
package com.mth.aop;import org.aspectj.lang.ProceedingJoinPoint;import org.aspectj.lang.annotation.After;import org.aspectj.lang.annotation.AfterReturning;import org.aspectj.lang.annotation.AfterThrowing;import org.aspectj.lang.annotation.Around;import org.aspectj.lang.annotation.Aspect;import org.aspectj.lang.annotation.Before;import org.aspectj.lang.annotation.Pointcut;import org.springframework.stereotype.Component;/** * * @ClassName: LogInterceptor * @Description: Aop 面像切面编程XML方式 此类也要交给Spring初始化就需要添加注解@Component * @author mth 75100313@qq.com * @date 2014-1-20 上午08:44:19 * */// @Aspect// @Componentpublic class LogInterceptor {// 多个一样的植入点可以抽出来定义// @Pointcut("execution(public void com.mth.impl..*.*(..))")public void myMethod() {}// 在方法执行之前先要执行这个方法// 植入点语句// @Before("execution(public void com.mth.impl.StuDaoImpl.save*(com.mth.bean.Student))")public void before() {System.out.println("before save");}// 方法正常执行完成之后(参数就是方法名)// @AfterReturning("myMethod()")public void afterReturning() {System.out.println("after save");}// 方法抛异常之后执行(StuDaoImpl里面的保存学生方法)// @AfterThrowing("myMethod()")public void afterThrowing() {System.out.println("afterThrowing");}// 环绕方法// @Around("myMethod()")public void aroundMethod(ProceedingJoinPoint pjp) throws Throwable {System.out.println("around save start");pjp.proceed();System.out.println("arround save end");}// 最终通知 任意返回值类型 com.mth下的任意包中的任意类中的任意方法 参数任意// @After("execution(* com.mth..*.*(..))")public void afterMethod() {System.out.println("---------after----------");}}
StuDaoImpl:
package com.mth.impl;import org.aspectj.lang.annotation.AfterThrowing;import org.springframework.stereotype.Component;import com.mth.bean.Student;import com.mth.dao.IStuDao;@Component("stuDao")public class StuDaoImpl implements IStuDao {@Overridepublic void saveStu(Student stu) {System.out.println("保存学生");//配合注解@AfterThrowing测试// throw new RuntimeException();}}
Service:
package com.mth.service;import javax.annotation.Resource;import org.springframework.stereotype.Component;import com.mth.bean.Student;import com.mth.dao.IStuDao;@Component("ser")public class Service {private IStuDao dao;public IStuDao getDao() {return dao;}@Resource(name="stuDao")public void setDao(IStuDao dao) {this.dao = dao;}public void saveStu(Student student) {dao.saveStu(student);}}
测试代码:
package com.mth.test;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.mth.bean.Student;import com.mth.service.Service;public class Test {/** * @Title: main * @Description: 测试Spring注解 * @param @param args 设定文件 * @return void 返回类型 * @throws */public static void main(String[] args) {ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");Service service = (Service) context.getBean("ser");service.saveStu(new Student());}}
附第一种配置写法:
<?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:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"><context:component-scan base-package="com.mth" /><!--XML配置 拦截类--><bean id="logInterceptor" class="com.mth.aop.LogInterceptor"></bean><aop:config><aop:pointcut expression="" id="p2" /><aop:aspect id="a1" ref="logInterceptor"><aop:pointcut expression="execution(public void com.mth.impl..*.*(..))"id="p1" /><aop:before pointcut-ref="p1" method="before" /><aop:after pointcut-ref="p1" method="afterMethod" /></aop:aspect></aop:config></beans>
0 0
- Spring Aop xml代理
- spring AOP XML
- Spring AOP xml异常
- Spring Aop XML
- spring aop xml方式
- spring-AOP-xml
- Spring、XML配置AOP
- spring aop xml事务管理
- Spring - AOP基于XML
- Spring XML AOP
- Spring AOP(xml)
- spring aop xml实例
- spring aop xml配制
- Spring AOP xml
- spring aop xml配置
- Spring AOP之通过xml定义aop
- Spring之AOP XML方式
- spring aop 配置文件 xml文件
- hadoop学习(二)ubuntu下安装virtual box 问题与解决
- linux shell awk 语法
- From Galileo to Google: How Big Data Illuminates Human Culture
- windows RabbitMQ 安装环境配置
- *p,&p,p在c中的区别
- Spring Aop XML
- 数据结构研究--创建单链表
- JavaMail发送邮件功能
- Delphi xe5 for android 地理定位GPS
- ubuntu命令安装内核源码及升级内核源码
- 互联网项目中, 一些可能有用的开源系统
- Springside4 demo运行记录
- 北大新任校长王恩哥的10句话
- [PHP漏洞]PHP0day漏洞挖掘及防范笔记(一)