spring AOP的样例代码

 
   /**spring 介绍
     * @author chengj
     * @date : 20142014-2-19 下午07:58:51
     * Spring 框架的两个核心特性    依赖注入(Dependency Injection  DI) 和 面向切面工程  AOP (Aspect-Oriented Programming )
     */


定义一个接口

package SpringTest;

public interface Ihello {

	public void hello(String name);
}

package SpringTest;

/**
 * @author chengj
 * @date : 20142014-2-19 下午08:03:14
 * 正常的业务
 */

public class HelloSpeak implements Ihello {

	public void hello(String name) {
		System.out.println(name+"hello");
	}
}
package SpringTest;

import java.util.logging.Level;
import java.util.logging.Logger;

import org.junit.Test;

/**
 * @author chengj
 * @date : 20142014-2-18 下午08:27:54
 * 静态代理
 * 代理类 的一个接口 只能 服务一种类型的类。而且需要代理的方法有很多。势必要为每个方法进行代理,静态代理在程序鬼魔稍大时
 * 必定是无法胜任的在
 *在 JDK1.3 之后假如了可协助开发的动态代理公呢个的API等相关类别的,不需要为特定类和方法编写特定的带泪,使用动态代理,
 *可以是的一个处理者(Handler)为各个类服务
 */
public class HelloProxy implements Ihello {

	private Ihello helloObject;
	private Logger logger = Logger.getLogger(this.getClass().getName());
	
	public HelloProxy(Ihello helloObject) {//定义了接口
		this.helloObject = helloObject;
	}

	
	public void hello(String name) {

		log("hello method start "); //日志服务
		helloObject.hello(name);//执行业务逻辑
		log("hello method end ");//日期服务
	}
	
	private void log(String msg){
		logger.log(Level.INFO,msg);
	}
			
}


测试

/**
	 * @author chengj
	 * @date : 20142014-2-18 下午08:35:03
	 * AOP 中的aspect 所指的可以是像日志等动作和服务  ,将这些动作(cross-cutting concern)
	 * 设计为通用,不介入特定业务类的一个职责清楚的Aspect 类 。这就是所谓的Aspect-Oriented Programming AOP 
	 */
package SpringTest;
import  org.springframework.aop.support.NameMatchMethodPointcutAdvisor;



public class Test {


           @org.junit.Test
	public void testHello(){
		Ihello proxy = new HelloProxy(new HelloSpeak()); //用它来实现
		proxy.hello("chengj");
	}

}







  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值