IOC:控制反转,是一种设计思想,将原本在程序中需要手动创建的对象交给spring框架来管理。(本来对象A需要对象B,需要用对象A来创建对象B,而现在,反转了,对象的创建全部由spring框架来完成,A需要对象B,不需要自己创建,由spring在特定的时候提供给A所需要的对象B,这就是IOC,控制反转,即把自己创建对象反转成交个程序帮忙创建对象。)IOC是由依赖注入实现的(DI),很大程度上简化了应用的开发。
AOP:面向切面编程,就是将那些公共的部分封装起来,减少代码的冗余,降低模块耦合度。AOP是基于动态代理实现的,就是为了生成动态代理对象。代理对象(就是访问对象,不会直接去访问,而是通过访问代理对象,间接的去访问要访问的那个对象。比如,如果一个领导A要找C做一件事,A是公司最大领导,B是C的部门领导,那么A直接找B就行,B就叫做代理对象,让C专注做他应该做的那件事即可,其他琐碎的事情交给B去做,B在这里充当的就是代理对象的作用。 )是目标对象的扩展,代理对象可以调用目标对象。动态代理的目的就是对原有代码进行增强。spring实现aop的原理主要分为两种动态代理和cglib代理,如果目标对象是实现接口,就是用动态代理,如果没有实现接口就是用cglib代理。AOP里的名词如下:
Joinpoint(连接点):就是指目标对象中可以增强的方法,即上述的save(),delete(),update(),query()。
Pointcut(切入点):指目标对象中已经增强的方法。
Advice(通知/增强):指增强的代码,即上述的System.out.println("打开事务");与System.out.println("提交事务");
Target(目标对象):被代理的对象。
Weaving(织入):将通知应用到连接点形成切入点的过程。
Proxy(代理):将通知织入到目标对象,形成代理对象。
Aspect(切面):切入点+通知