Spring學習筆記一(Spring核心思想)


通過學習《Spring in action (Third edition)》的第一章,我大概了解了Spring的基本思想:

1,依賴注入(Dependnecy Injection):

在不使用Spring框架的情況下,一個類要跟另一個類建立聯系,可能會使用如下的模式:

class A{...}

class B{

private A a;

...       }

這樣的話,每次實例化一個B的對象,如b1,必定實例化一個A的對象,如a1,並且b1和a1是緊耦合的,b1牢牢地和a1綁定在一起了。他們之間的關系不能變了。如果有一個a2要與b1建立聯系是不可能的。只能在實例化一個b2對象。這樣很難進行測試而且程序的靈活性很差。

Spring框架的做法是:

先定義一個接口I,讓A實現這個接口I,再定義B,在B中調用接口I,如:

interface I{

method1(){}

}

class A implements I{

method1(){}

}

class B{

I i;

}

然后最重要的,可以再xml中對A,B進行配置:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>

<!-- 定義bean -->

<bean id="A" class=".....">

<property name="msg">

<value>A</value>

</property>

</bean>

<bean id="B" class=".....">

<constructor-arg ref="A"/>

<property name="msg">

<value>B</value>

</property>

</bean>

</beans>

Spring是通過注入的方式將類A注入到了類B,而且我們可以通過xml將任何實現了I接口的類與類B產生關聯。這就是Spring的依賴注入的思想。

2,面向切面編程(AOP):

切面的意思就是,有些類或者說POJO,他們是專門提供某種固定服務的,而且為許多其他的類提供相同的服務,比如日志類logger,安全類security,事務管理類,這些類就像一個個切面一樣把其他的類包含在其中。

如果我們不用AOP,那么我們在程序中每個用到這些服務類提供的服務的地方,都要調用該類的方法,非常麻煩。

而用AOP編程,我們可以在xml中來定義各個bean中的方法之間的關系,如

定義了之后,每次只要調用embarkOnQuest()方法,就會在這個方法的前面和后面調用singBeforeQuest和singAfterQuest方法。

3,消除樣板式代碼簡化編程:

在程序開發的時候經常會有重復性的代碼,比如:

Spring改變了這種做法:

明顯減少了重復性的代碼,把程序的重心放在了核心的邏輯上、

 

總結:Spring框架的最終目標就是簡化java開發,特別是企業中的java開發。它的核心思想也就是以上這些內容,但是也就是這幾個本身就很簡單的思想,讓Spring能夠如願的實現它的目標。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM