Spring重要的思想:IoC&DI:
控制反转:将对象的创建权交给了spring
依赖注入:需要有IOC的环境,spring创建这个类的过程中,将这个类的依赖属性注入。就比如EE开发,有三层,分别是Action,Service,DAO。
action是管理,是总管,是分配任务的。
service是事务层,是进行逻辑操作的。
DAO是封装增删改查的。
那很明显,service依赖DAO,action依赖service,所以当spring创建的时候就需要将DAO注入到service,将service注入到action中。这就是注入依赖。
##我查了很多资料也看了很多文章,在我的理解里,其实IoC和DI是一个东西也是一个意思,就是讲的将对象的创建权交给spring来创建了。控制反转说的是意义与概念,而DI依赖注入更加注重表达的是从更具体的来描述了这个过程,让你从名字上就能知道,“噢,原来这就是IoC,这就是DI”。
AOP:
Aspect-OrientedProgramming,面向方面编程。用通俗一点的话来,其实就是把公用代码封装起来,减少重复代码。我相信很多程序员朋友在刚入门或者入门不久都会有这种思想,比如C中,将某个功能另外写成一个函数,实现功能函数,然后以后要再用的时候直接调用就可以,再者,以后需要维护或者修改的时候,直接在功能函数上修改。我画了张图,大概就是面向方面编程的意思,如果有不对,请大牛指出。
关于AOP相关概念:
1.通知 (Advice):
也就是我上图所画的公用功能A,其实就是你想定义的公用代码的功能。
2.连接点(JoinPoint):
也就是spring允许你在哪里使用通知。spring允许你在方法的前后,或者抛出异常的时候使用通知。
3.切入点(Pointcut):
上面的连接点是允许你使用,那你实际想要在哪使用就是切入点了。(注意我标黑体部分字就能理解了)
4.切面(Aspect):
切面就是通知和切入点的结合,就称为切面。
5.引入(introduction):
允许向现有的方法添加新的方法属性,其实就是把切面引入到目标类。
6.目标(target):
也就是目标类。
7.代理(proxy):
实现整套的AOP机制。
8.织入(weaving):
把切面应用到目标对象来创建新的代理对象的过程。
AOP实现原理:
前面说的将公用代码封装起来,需要的时候再调用,这是一个很简单的思想,毕竟程序员都是懒的。那在AOP里是怎么样实现这个过程的?
它是先创建一个伪装类,伪装成目标类,调用的时候,先调用到伪装类,然后进行了你想进行的操作(也就是通知),之后再调用目标类。
那要怎么实现这个伪装类呢
1,实现接口
2,创建子类
第一种实现接口就像,有人求你办事,这时候你的弟弟跳出来先见到这个人,然后收好处,也就是实现切面。收完好处之后,再去通知你,让你去帮别人办事,整个过程就是AOP思想了。
第二种创建子类,就相当于,你生了个儿子,学会了你所有的本领,也就是继承了你所有的方法。但是不同于你的一点就是,帮别人办事之前都喜欢占点小便宜,这就是创建子类实现AOP思想。
Spring配置:
bean元素:使用该元素描述需要spring管理的对象。
name属性:给被管理的对象起个别名
class属性:被管理对象的完整类名
spring的创建方式(只讲空参构造):
scope属性:singleton:单例
prototype:多例