官术网_书友最值得收藏!

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組件。

主站蜘蛛池模板: 武义县| 天长市| 苍南县| 盐山县| 嘉鱼县| 承德市| 沾化县| 峡江县| 麟游县| 西畴县| 西乌| 天气| 临潭县| 波密县| 喀喇| 隆子县| 惠来县| 岳阳市| 七台河市| 沂南县| 汾西县| 梨树县| 博客| 巴塘县| 沅陵县| 鄢陵县| 金乡县| 垦利县| 华容县| 大关县| 赤峰市| 东乡县| 东乡县| 大足县| 梨树县| 浦江县| 太白县| 永胜县| 平山县| 江陵县| 开江县|