Spring 兩大特色
1.Spring的IoC(Inversion of Control):
就是常說的“控制反轉”,也又叫依賴注入的(DI): 一般情況下在A類調用B類,必須先在A類實例化B類對象。而使用了Spring的IoC容器之後,可以通過它的配置文件(applicationContext.xml),向A類注入B類的對象,這样在A類中就不需要實例化B類對象而是可以直接使用,這样做的好處是降低了層與層之間的複雜度。
IoC的一个重点是在系统运行中,动态的向某个对象提供它所需要的其他对象。这一点是通过DI(Dependency Injection,依赖注入)来实现的。比如对象A需要操作数据库,以前我们总是要在A中自己编写代码来获得一个Connection对象,有了 spring我们就只需要告诉spring,A中需要一个Connection,至于这个Connection怎么构造,何时构造,A不需要知道。在系统运行时,spring会在适当的时候制造一个Connection,然后像打针一样,注射到A当中,这样就完成了对各个对象之间关系的控制。A需要依赖 Connection才能正常运行,而这个Connection是由spring注入到A中的,依赖注入的名字就这么来的。那么DI是如何实现的呢? Java 1.3之后一个重要特征是反射(reflection),它允许程序在运行的时候动态的生成对象、执行对象的方法、改变对象的属性,spring就是通过反射来实现注入的。
2. Spring的AOP(Aspect-oriented programming):
AOP的幾個核心概念:
1、 Aspect:切面,是對交叉業務邏輯的統稱。
2、 Joinpoint:連接點,指切面可以織入到目標對象的位置(方法,屬性等)。
3、 Advice:通知,指切面的具體實現
4、 Pointcut:切入點,指通知應用到哪些方法或屬性之上的規則。
5、 Introduction:引入,指動態地给一個對象增加方法或屬性的一種特殊的通知。
6、 Weaving:織入,指將通知插入到目標對象,Spring支持的是動態織入。
7、Target:目標對象,指需要織入切面的對象。
8、 Proxy:代理對象,指切面織入目標對象之後形成的對象
SpringAOP原理:采用動態代理模式,其過程为:
1、 將切面使用動態代理的方式動態織入到目標對象(被代理類),形成一個代理對象。
2、 默認情況下,會使用目標對象的接口來生成代理對象(JDK的動態代理),目標對象如果沒有實現代理接 口,那麼Spring會采用CGLib來生成代理對象,該代理對象是目標對象的子類。
3、 目標對象如果是final類,並且也沒有實現代理接口,就不能運用AOP。
............工三小