浅谈Spring概念(DI,IoC,AOP)

 

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中,将某个功能另外写成一个函数,实现功能函数,然后以后要再用的时候直接调用就可以,再者,以后需要维护或者修改的时候,直接在功能函数上修改。我画了张图,大概就是面向方面编程的意思,如果有不对,请大牛指出。

浅谈Spring概念(DI,IoC,AOP)_第1张图片

关于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:多例

 

   

 

 

 

你可能感兴趣的:(Spring)