请教大家对spring的aop和控制反转是如何理解的

   阅读
请问大家对spring的aop和控制反转是怎么理解的?
从结训以后,就很少接触spring了,最近想把spring好好的理解一下,但是对于他的切面编程和控制反转总是理解不同,所以想听听给位大牛们的看法,希望不吝赐教

------解决方案--------------------
IOC 控制反转 比如 我有 struts Action 中想使用 Service 中的方法 
传统 在Action中有

**Service ser=new **Service();

这样 Action 和 Service 就产生了强耦合 如果我想使用另一个Service的实现 也需要改变 Action的代码

有了 IOC 以后
我们只需要声明 ** Service ser等着实现由 Ioc 注入, 
这样把耦合都交给了框架,使 Action与Service 解耦,如果我想换一个Service 的实现是不需要 改变任何Action的

而AOP则是一种思想,比如我们需要记录日志,如果使用老办法,我们每一个类都要写一个记录日志的代理,

我们只是抽出了共性 ,把他封装起来,提供一个切面,所有的类都可以使用。 

我的理解是这样
------解决方案--------------------
个人认为:
ioc 相当于 平时我们使用的工厂。
di 相当于 平时我们的setter方法。
aop 相当于 平时我们的代理模式。
------解决方案--------------------
帮顶吧,理解还谈不上,知道用
------解决方案--------------------
控制反转就是本来要自己做的事情,现在由容器帮你创建,比如你以前自己实例化dao现在容器帮你注入实例,而aop就是好比程序是自上向下,而你需要在程序的某个方法执行前判断权限或者日志等,就好比切入到程序,呵呵,大概就是这吧,你看看动态代理基本上就理解aop了。
阅读