[b][color=red]后置通知:AfterReturningAdvice方法
1.新建一个《MyAfterAdvice.java》[/color][/b]
package cn.csdn.advice;
import java.lang.reflect.Method;
import org.springframework.aop.AfterReturningAdvice;
public class MyAfterAdvice implements AfterReturningAdvice{
/*
* 第一个参数:方法的返回值
* 第二个参数:方法对象
* 第三个参数:方法的参数
* 第四个参数:目标对象
*/
@Override
public void afterReturning(Object returnvalue, Method md, Object[] args,
Object target) throws Throwable {
System.out.println(returnvalue+md.getName()+args+target);
System.out.println("...........员工下班之后打卡................");
}
}
[color=green]代理对象的目标只能是一个[/color]
引入通知:
[b][color=red]创建一个:
Modifydate.java接口[/color][/b]package cn.csdn.service;
import java.util.Date;
public interface Modifydate {
/*设置属性方法*/
void setDate(Date date);
/*获取属性方法*/
Date getDate();
}
[b][color=red]
创建一个ModifyDateimpl.java类[/color][/b]
package cn.csdn.service;
import java.util.Date;
import org.springframework.aop.support.DelegatingIntroductionInterceptor;
public class ModifyDateImpl extends DelegatingIntroductionInterceptor implements Modifydate{
private Date date;
@Override
public Date getDate() {
// TODO Auto-generated method stub
return date;
}
@Override
public void setDate(Date date) {
this.date=date;
}
}
[b][color=red]
配置文件:[/color][/b]<!-- 声明引入通知 -->
<bean id="modifyDateImpl" class="cn.csdn.service.ModifyDateImpl" />
<!-- 配置advise -->
<bean id="defaultIntroductionAdvisor" class="org.springframework.aop.support.DefaultIntroductionAdvisor">
<constructor-arg index="0" ref="modifyDateImpl"></constructor-arg>
</bean>
<!-- 声明代理接口 -->
<property name="proxyInterfaces">
<list>
<value>cn.csdn.service.EmpService</value>
<value>cn.csdn.service.Modifydate</value>
</list>
</property>
<!-- 拦截器的名称 -->
<property name="interceptorNames">
<list>
<value>defaultIntroductionAdvisor</value>
</list>
</property>
1.新建一个《MyAfterAdvice.java》[/color][/b]
package cn.csdn.advice;
import java.lang.reflect.Method;
import org.springframework.aop.AfterReturningAdvice;
public class MyAfterAdvice implements AfterReturningAdvice{
/*
* 第一个参数:方法的返回值
* 第二个参数:方法对象
* 第三个参数:方法的参数
* 第四个参数:目标对象
*/
@Override
public void afterReturning(Object returnvalue, Method md, Object[] args,
Object target) throws Throwable {
System.out.println(returnvalue+md.getName()+args+target);
System.out.println("...........员工下班之后打卡................");
}
}
[color=green]代理对象的目标只能是一个[/color]
引入通知:
[b][color=red]创建一个:
Modifydate.java接口[/color][/b]package cn.csdn.service;
import java.util.Date;
public interface Modifydate {
/*设置属性方法*/
void setDate(Date date);
/*获取属性方法*/
Date getDate();
}
[b][color=red]
创建一个ModifyDateimpl.java类[/color][/b]
package cn.csdn.service;
import java.util.Date;
import org.springframework.aop.support.DelegatingIntroductionInterceptor;
public class ModifyDateImpl extends DelegatingIntroductionInterceptor implements Modifydate{
private Date date;
@Override
public Date getDate() {
// TODO Auto-generated method stub
return date;
}
@Override
public void setDate(Date date) {
this.date=date;
}
}
[b][color=red]
配置文件:[/color][/b]<!-- 声明引入通知 -->
<bean id="modifyDateImpl" class="cn.csdn.service.ModifyDateImpl" />
<!-- 配置advise -->
<bean id="defaultIntroductionAdvisor" class="org.springframework.aop.support.DefaultIntroductionAdvisor">
<constructor-arg index="0" ref="modifyDateImpl"></constructor-arg>
</bean>
<!-- 声明代理接口 -->
<property name="proxyInterfaces">
<list>
<value>cn.csdn.service.EmpService</value>
<value>cn.csdn.service.Modifydate</value>
</list>
</property>
<!-- 拦截器的名称 -->
<property name="interceptorNames">
<list>
<value>defaultIntroductionAdvisor</value>
</list>
</property>