阿里云大学JavaWeb开发系列课程:Spring框架入门第十二讲使用spring aopApi实现(补)

5、使用spring实现aop

第一种方式—通过springAPI来实现aop

Log.java--前置通知

package cn.sxt.log;

import java.lang.reflect.Method;

import org.springframework.aop.MethodBeforeAdvice;

public class Log implements MethodBeforeAdvice{
	/*
	 * @param method 被调用方法对象
	 * @param args 被调用的方法的参数
	 * @param target 被调用方法的目标对象
	 */ 
	@Override
	public void before(Method method, Object[] args, Object target) 
			throws Throwable {
		System.out.println(target.getClass().getName()+"的"+method.getName()+"方法被执行");	
	}
}

AfterLog.java

package cn.sxt.log;

import java.lang.reflect.Method;

import org.springframework.aop.AfterReturningAdvice;

public class AfterLog implements AfterReturningAdvice{
	/*目标方法执行的通知
	 * returnValue--返回值
	 * method 被调用的方法对象
	 * args 被调用的方法对象的目标对象
	 * target 被调用的方法对象的目标对象
	 */
	@Override
	public void afterReturning(Object returnValue, Method method, Object[] args, Object target) 
			throws Throwable {
		// TODO 自动生成的方法存根
		System.out.println(target.getClass().getName()+"的"+method.getName()+"被执行,返回值是:"+returnValue);
	}
	
}

目标类UserServiceImpl.java

package cn.sxt.service;

public class UserServiceImpl implements UserService{
	public void add(int a) {
		System.out.println("增加用户");
	}
	public void update() {
		System.out.println("修改用户");
	}
	public void delete() {
		System.out.println("删除用户");
	}
	public void search() {
		System.out.println("查询用户");
	}

}

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"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
	http://www.springframework.org/schema/beans/spring-beans.xsd
	http://www.springframework.org/schema/aop
	http://www.springframework.org/schema/aop/spring-aop.xsd">
	<bean id="userService" class="cn.sxt.service.impl.UserServiceImpl"></bean>
	<bean id="log" class="cn.sxt.log.Log"/>
	<bean id="afterLog" class="cn.sxt.log.AfterLog"/>
	<aop:config>
		<aop:pointcut expression="execution(* cn.sxt.service.impl.*.*(..))" id="pointcut"/>
		<aop:advisor advice-ref="log" pointcut-ref="pointcut"/>
		<aop:advisor advice-ref="afterLog" pointcut-ref="pointcut"/>
	</aop:config>
</beans>

Test.java

package cn.sxt.test;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import cn.sxt.service.UserService;



public class Test {
	public static void main(String[] args) {
		ApplicationContext ac=new ClassPathXmlApplicationContext("beans.xml");
		UserService userService =(UserService)ac.getBean("userService");
		userService.add(2);
	}
}

UserService.java

package cn.sxt.service;

public interface UserService {
	public void add(int a);
	public void update();
	public void delete();
	public void search();
	
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值