溫故知新:spring_01IOC整體感受

          IOC(inverse of control)控制反轉(zhuǎn),是spring提供的非常優(yōu)秀的一種特性,這種特性使得在項目中,所有對象的實例都交由spring去創(chuàng)建,管理。為什么要這么做呢,假使我們脫離spring,在開發(fā)的過程中,需要新建實例的時候自己去new,那么組件之間的耦合度會非常高,在一個業(yè)務(wù)處理類中,某個對象就寫死引用某個實例,一旦有較大的業(yè)務(wù)變更,需要修改的地方可能會多的不敢想象,如果文檔,代碼和注釋的維護較差,那么業(yè)務(wù)變更簡直就是噩夢。spring的IOC特性就助力實現(xiàn)了“高內(nèi)聚,低耦合”的這種設(shè)計理念。
          記錄一下平時在使用spring時的一些技巧和心得,先說明一下測試環(huán)境。

          環(huán)境如下
          系統(tǒng):64位win7


          測試環(huán)境:



          先從一個helloworld的簡單案例開始吧
          新建一個maven項目,選擇


          其實不論使用哪個框架技術(shù),都無非三步走,import,config,run,首先,我們import
          因為使用maven來管理項目,所以直接添加spring的依賴到pom.xml
           1         <dependency>
           2             <groupId>org.springframework</groupId>
           3             <artifactId>spring-core</artifactId>
           4             <version>3.0.5.RELEASE</version>
           5         </dependency>
           6 
           7         <dependency>
           8             <groupId>org.springframework</groupId>
           9             <artifactId>spring-context</artifactId>
          10             <version>3.0.5.RELEASE</version>
          11         </dependency>
          之后,我們開始config,作為一個基本IOC演示,只需要定義工廠的配置。定義一個beans.xml文件,置于src下。其中bean標(biāo)簽就是定義beanId和待注入對象實例之間的映射。
          就是“用這個id取對象實例,你會取到class的對象實例”
          1 <?xml version="1.0" encoding="UTF-8"?>
          2 <beans xmlns="http://www.springframework.org/schema/beans"
          3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          4     xsi:schemaLocation="http://www.springframework.org/schema/beans 
          5                         http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
          6 
          7     <bean id="helloSpring" class="demo.model.Demo"/>
          8 
          9 </beans>
          演示類
           1 package demo.model;
           2 
           3 public class Demo {
           4     
           5     public Demo() {
           6     }
           7 
           8     public void hello(){
           9         System.out.println("hello");
          10     }
          11 }
          12 
          測試類
           1 package org.duyt.test;
           2 
           3 import org.duyt.model.Demo;
           4 import org.junit.Test;
           5 import org.springframework.beans.factory.BeanFactory;
           6 import org.springframework.context.support.ClassPathXmlApplicationContext;
           7 
           8 public class SpringDemo {
           9 
          10     //讀入指定的工廠配置文件到spring的容器,文件名可自定義
          11     private BeanFactory factory = new ClassPathXmlApplicationContext("beans.xml");
          12     
          13     @Test
          14     public void test(){
          15         //根據(jù)bean的key獲取對象的實例
          16         Demo d = (Demo) factory.getBean("helloSpring");
          17         //或者直接使用重載的getBean方法,設(shè)定好需要返回的類型
          18         //Demo dd =  factory.getBean("helloSpring", Demo.class);
          19         d.hello();
          20         //dd.hello();
          21     }
          22     
          23 }
          24 
          以上,就是spingIOC最簡易的使用。

          posted on 2014-11-03 17:19 都較瘦 閱讀(136) 評論(0)  編輯  收藏 所屬分類: containerFramework

          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導(dǎo)航

          統(tǒng)計

          公告

          博客定位:囿于目前的水平,博客定位在記錄自己的學(xué)習(xí)心得和隨手的練習(xí)

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 临江市| 黔东| 通化市| 罗甸县| 古蔺县| 宁化县| 岳池县| 北安市| 黔江区| 聂拉木县| 安远县| 屏南县| 崇阳县| 泰安市| 夹江县| 金溪县| 平潭县| 博爱县| 闵行区| 宿迁市| 尚义县| 高邑县| 台东市| 开平市| 嵊泗县| 曲麻莱县| 康定县| 杭锦后旗| 西城区| 南澳县| 承德县| 盐边县| 新干县| 柳州市| 贵德县| 喀喇沁旗| 楚雄市| 莎车县| 青龙| 斗六市| 高邑县|