- Spring 5企業級開發實戰
- 周冠亞 黃文毅
- 697字
- 2019-11-22 18:47:05
2.2 Spring IoC的實現方式
2.2.1 XML方式實現
用構造器方式實現IoC分為無參構造器和有參構造器兩種。下面以User和Order為例說明,User使用無參構造器的方式,Order使用有參構造器的方式,分別實現無參構造器和有參構造器的IoC。
User類的實現如下:

在spring-chapter2.xml文件中,通過bean標簽將User類交給IoC容器管理,代碼如下:
<!-- User無參構造器 --> <bean id="user" class="com.test.ioc.constructor.User"/>
與User類不同的是,Order類是沒有無參構造器的,Order類含有一個帶有兩個參數——訂單號和訂單金額的有參構造器。Order類的定義如下:

在spring-chapter2.xml文件中通過bean標簽將User類交給IoC容器管理。具體配置如下:

在單元測試類XmlTest中,通過依賴注入得到Speakable的對象User和Deliverable的對象Order,單元測試代碼如下:

其中@RunWith這個注解指定了讓單元測試運行于Spring的環境中,@ContextConfiguration這個注解指定Spring加載的配置文件。執行單元測試,測試結果如下。
大家好 訂單號201808121706,金額1000.0,已發貨!
2.2.2 通過注解方式實現
除了通過構造器實現IoC,還可以通過Spring提供的注解方法實現IoC,這也是企業開發過程中最常用的一種IoC實現方式。下面通過學生類Student闡述注解的方式實現IoC。
Student類的定義如下:

注意此時的Student類上加了一個@Service注解,這告訴Spring,讓其管理這個類的對象,因此開發人員就不再需要管理Student對象了。
與XML方式實現的IoC不同的是,注解方式除了配置@Service注解外,還需要指定Spring對需要管理的bean目錄,否則Spring不能定位其需要管理的bean。具體配置如下:

接下來在測試類AnnotationTest中通過依賴注入,將HomeWork對象注入到AnnotationTest測試類中,測試代碼如下:

運行單元測試,測試結果如下:
我是學生,我要寫家庭作業
除了例中的注解@Service可以實現Bean的IoC以外,Spring還提供了很多其他的注解來實現IoC。
(1)@Component將Java類標記成一個Spring Bean組件。
(2)@Service將業務層實現類標記成一個Spring Bean組件。
(3)@Controller將控制層類標記成一個Spring Bean組件。
(4)@Repository將一個持久層實現類標記成一個Spring Bean組件。
- 計算機圖形學編程(使用OpenGL和C++)(第2版)
- 深度學習經典案例解析:基于MATLAB
- Developing Middleware in Java EE 8
- FFmpeg入門詳解:音視頻流媒體播放器原理及應用
- Visual Basic程序設計教程
- 編寫高質量代碼:改善C程序代碼的125個建議
- GeoServer Beginner's Guide(Second Edition)
- Go并發編程實戰
- HTML5+CSS3 Web前端開發技術(第2版)
- Java編程從入門到精通
- Python期貨量化交易實戰
- Unity 5.X從入門到精通
- Python+Office:輕松實現Python辦公自動化
- 多媒體技術及應用
- Android Studio開發實戰:從零基礎到App上線 (移動開發叢書)