聊聊Spring4.x基礎配置(一):依賴注入

XML Java Groovy 技術 走向架構師之路 2017-05-12

原文地址:http://blog.longjiazuo.com/archives/1239

聊聊Spring4.x基礎配置(一):依賴注入

接下來準備對spring4.x的相關特性做一個總結和整理,會有一系列文章,歡迎大家閱讀,交流,討論。

Spring框架本身的四大原則:

(1) 使用POJO進行輕量級和最小侵入式開發。

(2) 通過依賴注入和基於接口編程實現鬆耦合。

(3) 通過AOP和默認習慣進行聲明式編程。

(4) 使用AOP和模板(template)減少模式化代碼。

Spring所有功能的設計和實現都是基於此四大原則的。

一. 依賴注入

1. 點睛

我們經常說的控制反轉(Inversion of Control-IOC)和依賴注入(dependency injection-DI)在Spring環境下是等同的概念,控制反轉是通過依賴注入來實現的。所謂依賴注入是指的是容器負責創建對象和維護對象間的依賴關係,而不是通過對象本身負責自己的創建和解決自己的依賴。

依賴注入的主要目的是為了解耦,體現了一種”組合”的理念。如果你希望你的類具備某項功能的時候,是繼承自一個具有此功能的父類好呢?還是組合另外一個具有這個功能的類好呢?答案是不言而喻的,繼承一個父類,子類將會與父類耦合,組合另外一個類則使耦合度大大降低。

Spring IoC容器(ApplicationContext)負責創建Bean,並通過容器將功能類Bean注入到你需要的Bean中。Spring提供使用xml,註解,Java配置,groovy配置實現Bean的創建和注入。

無論是xml配置,註解配置還是Java配置,都被稱為配置元數據,所謂元數據即描述數據的數據。元數據本身不具備任何可執行的能力,只能通過外界代碼來對這些元數據行解析後進行一些有意義的操作。Spring容器解析這些配置元數據進行Bean初始化,配置和管理依賴。

聲明Bean的註解:

@Component組件,沒有明確的角色。

@Controller在展現層(MVC——>SpringMVC)使用。

@Service在業務邏輯層(service層)使用。

@Repository在數據訪問層(dao層)使用。

注入Bean的註解,一般情況下通用。

@Autowired:Spring提供的註解。

@Resource:JSR-250提供的註解。

@Inject:JSR-330提供的註解。

@Autowired,@Inject,@Resource可註解在set方法或者屬性上,我個人的習慣是註解在屬性上。

二.示例

1. 編寫功能類的Bean

聊聊Spring4.x基礎配置(一):依賴注入

代碼解釋:

① 使用@Service註解聲明當前FunctionService類是Spring容器管理的一個Bean。其中,使用@Component,@Service,@Repository和@Controller是等效的,可以根據自己的需要選用。

2. 使用功能類的Bean

聊聊Spring4.x基礎配置(一):依賴注入

代碼解釋:

① 使用@Service註解聲明當前UseFunctionService類是Spring容器管理的一個Bean。

②使用@Autowired將FunctionService的實體Bean注入到UseFunctionService 中,讓UseFunctionService具備FunctionService的功能,此處使用JSR-330的@Inject註解或者JSR-250的@Resource註解是等效的。

3. 配置類

聊聊Spring4.x基礎配置(一):依賴注入

代碼解釋:

①@Configuration聲明當前類是一個配置類。

②使用@ComponentScan註解將會自動掃描包名下所有使用@Service,@Component,@Repository和@Controller
的類,並註冊為Bean。

4. 運行

聊聊Spring4.x基礎配置(一):依賴注入

代碼解釋:

① 使用AnnotationConfigApplicationContext作為Spring容器,接受輸入一個配置類作為參數。

② 獲得聲明配置的UseFunctionService的Bean。

運行結果如下所示:

聊聊Spring4.x基礎配置(一):依賴注入

相關推薦

推薦中...