SSM框架學習-Spring篇 IOC/DI技術學習筆記——標籤的使用。

SSM框架學習-Spring篇 IOC/DI技術學習筆記——<bean>標籤的使用。

 

Spring開始學習的第一章節,首先學習的是IOC(控制反轉)#也依賴注入的技術。這是一種面向對象的編程理念。用於降低代碼之間的耦合度。

想要使用Spring。首先要在Maven的Pom文件裏面導入依賴。

    <!-- https://mvnrepository.com/artifact/org.springframework/spring-core -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>5.0.8.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-beans</artifactId>
      <version>5.0.8.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.0.8.RELEASE</version>
    </dependency>

Spring有四大核心組件,這裏導入了三個#由於各個依賴之間有連帶關係(可能不用導入三個,導入一個就行)。

然後在main的對應的package下面(和java同級),寫一個resource文件,這裏存放着spring的配置文件。

 new一個叫做applicationContext的spring配置文件

這樣,基本的框架就搭建好了,接下去我們要利用這配置文件來實現定義一個bean的實例。

首先Bean是什麼東西?他和Pojo和entity有什麼區別?

引用:https://www.cnblogs.com/LiuChunfu/p/5574565.html

——只要是Java的類的就可以稱爲一個Bean,在Spring上裏面,被Spring管理的對象就可以將其稱作爲Bean。它不僅僅可以包括對象的屬性以及get,set方法,還可以有具體的業務邏輯。

可是,只是實體類而已,有什麼好管理的呢?用傳統的 Obj obj  = new Obj()的方法來創建不好麼?

先使用一個小例子來體現區別:

創建Girl的實體類:

在applicationContext.xml裏面寫bean標籤:

<bean class ="cn.sdibt.edu.iMaker.pojo.Girl" id="girl"> </bean>

class指定實例的屬性,在pojo文件夾下面的Girl.class,id是作爲起一個別名作爲唯一標識,在java代碼中被引用。

在java代碼中,寫一個test方法。

這樣就可以生成girl對象,然後執行裏面的方法。

 

 

ApplicationContext是一個接口,負責讀取spring配置文件,用於管理對象的加載生成維護Bean之間的關係(繼承?實現?),以及Bean的生命週期。ClassPathXmlApplicationContext("applicationContext.xml")是ApplicationContext的實現類,用於從classpath裏面讀取配置文件。

這樣,一個叫做ctx的上下文對象Context就被創建了出來,對這個對象使用getBean(實體類的id)就可以獲取一個對象

在這裏需要強制轉型爲想要的Girl,這樣就通過spring的配置文件生成了一個對象。

雖然步驟很麻煩,但是對於企業級開發,實體類數目龐大的時候,這種做法是很便於管理的

那麼怎麼會便於管理呢?下面是例子,關於怎麼使用spring處理bean之間的關係(實現)

我們可以創建一個接口叫做Pay,來模擬支付方式之間的轉換。

裏面有個抽象方法需要實現類來重載。

創建微信支付類支付寶支付類

 

這些實現類裏面都重載了Pay的方法。

按照傳統的寫法,程序員在java代碼裏面想要實現支付方式的切換,需要這樣。

if(微信支付)

Pay pay = new WXPay();

else

Pay pay = new ALiPay()

這樣幾行的代碼。來處理這種實現的關係,那麼在spring裏面我們只要修改xml文件裏面關於叫做pay的class屬性即可

在java代碼裏面:

這裏的代碼在切換兩種支付方式的時候是不變的,因爲在 applicationContext.xml 裏面我們修改了getBean("pay")的pay對應的實體類。這樣就避免了在java代碼層的出錯

同樣的,關於處理繼承的關係,我們也可以類似的操作來實現只改變xml文件,不動java代碼層。

新建prettyGirl實體類,繼承自上面的Girl

 我們只需要修改xml文件中對應girl的id的class屬性即可,把它從girl換成PrettyGirl:

 在java代碼中,我們就可以幾乎只用幾行代碼來獲取這個對象,不用改動,想要調用方法就調用即可。

 我們只需要獲取getBean即可。

總結:

    Bean可以用來指向(class)一個實體類,利用spring在java層的生成對象的時候,就可以通過修改xml文件來處理實體類和實體類之間的各種關係。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章