自己理解spring中的AOP

 Spring 中AOP概念是老生长谈的东东了, 说起概念来大家都晕晕的, 真是不好理解 ,抓住问题的本质,

三个为什么恩。 AOP的目的是什么,为了解决什么问题引出的AOP,实现的原理是什么恩,三个问题

1引出AOP的问题是

   yu

package com.cee.springMVC;

import org.apache.log4j.Logger;

public class LoginDemo {

	private Logger logger = Logger.getLogger(this.getClass().getName());

	/**
	 * 
	 * 假如我想在登陆前进行,后 日志记录操作 可能大家或说用log4j的方式,用这种方式会造成代码的入侵
	 * 而且相关代码很多,我不可能将每一个要日志操作的代码 写到每一个所需要的类 中,这样也太累了把
	 */
	public void login() {
		logger.info("登陆前");// 模拟方法
		System.out.println("login");
		logger.info("登陆后");// 模拟方法
	}

}

  原因明确了,那就跟着目的了,我们要解决这个问题恩, 解决的方式是

 采用 代理的方式 ,将公用的代码提取出来,合理的植入到所要地方,植入 是要通过 Spring 的配置文件植入,不要在代 码中植入

 代理模式的理解恩

  接口与实现类  调用实现类 声明的时候 用接口类型 , 接口就上 类对象的一个 副本或者承认

  写一个代理实现模式吧

 

package com.cee.proxy;

/**
 * @author qcy 定义了 代理借口 通过接口调用实现类的方法
 */
public interface Iproxy {

	public void testMothed();

	public void testMothed2();
}

 

 

package com.cee.proxy;

public class ProxyImple implements Iproxy {

	public void testMothed() {
		// TODO Auto-generated method stub
		System.out.print("testMothed");
	}

	public void testMothed2() {
		// TODO Auto-generated method stub
		System.out.print("testMothed1");

	}

}

 

 

package com.cee.proxy;

public class Main {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Iproxy ip = new ProxyImple();
		ip.testMothed();
	}

}

   写了一个简单的代理设计模式,实际上大部分的用动态代理设计模式,而不是这类的静态代理模式

 贴一个网址吧 上面说的比我说的清楚http://www.iteye.com/topic/282511,至少他有时序图。

  说说Spring 中的 关键就上 植入 的方式, 怎么植入

 算了本来想写呢, 网上的例子很多。。。

http://www.iteye.com/topic/42673 

http://www.iteye.com/topic/630787

你可能感兴趣的:(apache,设计模式,spring,AOP,log4j)