<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    sblig

    BlogJava 首頁(yè) 新隨筆 聯(lián)系 聚合 管理
      10 Posts :: 0 Stories :: 0 Comments :: 0 Trackbacks


    跟我學(xué)Spring3 學(xué)習(xí)筆記一

    跟我學(xué)Spring3 學(xué)習(xí)筆記二

    跟我學(xué)Spring3 學(xué)習(xí)筆記三

    跟我學(xué)Spring3 學(xué)習(xí)筆記四

    跟我學(xué)Spring3 學(xué)習(xí)筆記五 注入

    ?

    ?

    引用其它Bean

    ?

    一、構(gòu)造器注入方式:

    (1)通過(guò)” <constructor-arg>”標(biāo)簽的ref屬性來(lái)引用其他Bean

    ?

    (2)通過(guò)” <constructor-arg>”標(biāo)簽的子<ref>標(biāo)簽來(lái)引用其他Bean,使用bean屬性來(lái)指定引用的Bean

    二、setter注入方式:

    (1)通過(guò)” <property>”標(biāo)簽的ref屬性來(lái)引用其他Bean

    (2)通過(guò)” <property>”標(biāo)簽的子<ref>標(biāo)簽來(lái)引用其他Bean,使用bean屬性來(lái)指定引用的Bean

    ?

    ?

    public class HelloDiBean implements HelloApi{
    
    	private HelloApi helloApi;
    	private HelloApi helloApi2;
    	
    
    	public HelloDiBean(HelloApi helloApi){
    		this.helloApi = helloApi;
    	}
    	
    	public void sayHello() {
    		helloApi.sayHello();
    		helloApi2.sayHello();
    	}
    	
    
    	public HelloApi getHelloApi2() {
    		return helloApi2;
    	}
    
    	public void setHelloApi2(HelloApi helloApi2) {
    		this.helloApi2 = helloApi2;
    	}
    }
    

    ?配置注入引用其他的bean

    ?

    <!-- 引用其他的bean進(jìn)行注入 -->
    	<bean id="helloBean" class="com.dilist.HelloDiBean">
    		<constructor-arg index="0" ref="mapBean" />
    		<property name="helloApi2">
    			<ref bean="properBean" />
    		</property>
    	</bean>
    	
    ?

    其他引用bean 的高級(jí)用法:

    ?

    /**
     * Spring還提供了另外兩種更高級(jí)的配置方式,<ref local=””/>和<ref parent=””/>:
     * (1)<ref local=””/>配置方式:用于引用通過(guò)<bean id=”beanName”>方式中通過(guò)id屬性指定的Bean,
     * 		它能利用XML解析器的驗(yàn)證功能在讀取配置文件時(shí)來(lái)驗(yàn)證引用的Bean是否存在。
     * 		因此如果在當(dāng)前配置文件中有相互引用的Bean可以采用<ref local>方式從而如果配置錯(cuò)誤能在開(kāi)發(fā)調(diào)試時(shí)就發(fā)現(xiàn)錯(cuò)誤。
     * (2)<ref parent=””/>配置方式:用于引用父容器中的Bean,不會(huì)引用當(dāng)前容器中的Bean,
     *       當(dāng)然父容器中的Bean和當(dāng)前容器的Bean是可以重名的,獲取順序是直接到父容器找。
     */
    public class HelloHigh implements HelloApi{
    	
    	private HelloApi helloApi;
    	private HelloApi helloApi2;
    	
    
    	public HelloHigh(HelloApi helloApi){
    		this.helloApi = helloApi;
    	}
    	
    	public void sayHello() {
    		helloApi.sayHello();
    		System.out.println("");
    		helloApi2.sayHello();
    	}
    	
    
    	public HelloApi getHelloApi2() {
    		return helloApi2;
    	}
    
    	public void setHelloApi2(HelloApi helloApi2) {
    		this.helloApi2 = helloApi2;
    	}
    
    }
    ?

    helloworld.xml:

    ?

    <!-- 注入properties類型 -->
    	<bean id="properBean" class="com.dilist.HelloDiProperties">
    		<property name="properties">
    			<props value-type="int" merge="default"><!-- 雖然指定value-type,但是不起作用 -->
    				<prop key="1">1sss</prop>           <!-- Properties 建和值都是String類型 -->
    				<prop key="2">2</prop>
    			</props>
    		</property>
    		<property name="properties2">
    			<value> <!-- 分隔符可以是 “換行”、“;”、“,” 不建議該方式,優(yōu)先選擇第一種方式 -->
    				1=11
    				2=22;<!-- 這樣的分隔符好像沒(méi)用 -->
    			    3=33,
    				4=44
    			</value>
    		</property>
    	</bean>
    
    	<!-- Spring還提供了另外兩種更高級(jí)的配置方式,<ref local=””/>和<ref parent=””/> -->
    	<bean id="helloHigh" class="com.dilist.HelloHigh">
    		<constructor-arg index="0"><ref local="properBean" /></constructor-arg>
    		<property name="helloApi2"><ref parent="properBean" /></property>	
    	</bean>
    ?

    ?

    helloworldParent.xml:

    ?

    <!-- 注入properties類型 -->
    	<bean id="properBean" class="com.dilist.HelloDiProperties">
    		<property name="properties">
    			<props value-type="int" merge="default"><!-- 雖然指定value-type,但是不起作用 -->
    				<prop key="1">2dss</prop>           <!-- Properties 建和值都是String類型 -->
    				<prop key="2">3aas</prop>
    			</props>
    		</property>
    		<property name="properties2">
    			<value> <!-- 分隔符可以是 “換行”、“;”、“,” 不建議該方式,優(yōu)先選擇第一種方式 -->
    				1=111
    				2=222;<!-- 這樣的分隔符好像沒(méi)用 -->
    			    3=333,
    				4=444
    			</value>
    		</property>
    	</bean>
    ?

    調(diào)用處 利用加載父容器的方式,注入父容器中的Bean:

    ?

    ?

    @Test
    	public void testDiBeanHigh() {
    		// 以classes為根目錄算起
    		// 讀取配置文件實(shí)例化一個(gè)Ioc容器
    
    		// 初始化父容器
    		ApplicationContext parentContext = new ClassPathXmlApplicationContext(
    				"helloworldParent.xml");
    
    		// 初始化當(dāng)前容器
    		ApplicationContext context = new ClassPathXmlApplicationContext(
    				new String[] { "helloworld.xml" }, parentContext);
    
    		// 構(gòu)造 + setter注入 引用其他的bean注入
    		HelloApi helloApi = context.getBean("helloHigh", HelloApi.class);
    		helloApi.sayHello();
    
    	}


    已有 0 人發(fā)表留言,猛擊->>這里<<-參與討論


    ITeye推薦



    posted on 2012-10-18 14:32 李凡 閱讀(147) 評(píng)論(0)  編輯  收藏

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 91免费国产视频| 国产性生大片免费观看性| 最近最新高清免费中文字幕| 中文亚洲AV片不卡在线观看 | 国产亚洲精久久久久久无码77777 国产亚洲精品成人AA片新蒲金 | 亚洲国产成人91精品| 在线观看免费中文视频| 亚洲综合综合在线| 免费黄色网址网站| 国产亚洲精品VA片在线播放| 成年美女黄网站色大免费视频| 国产成人亚洲综合网站不卡| 日韩一区二区在线免费观看| 成人婷婷网色偷偷亚洲男人的天堂| 国产大片线上免费看| 老司机午夜在线视频免费| 久久久久国产成人精品亚洲午夜| 国产在线播放线91免费| 伊人久久综在合线亚洲2019| 成年黄网站色大免费全看| 亚洲AV无码一区二区三区在线| 成年丰满熟妇午夜免费视频| 亚洲精品蜜夜内射| 国产精品亚洲高清一区二区| 叮咚影视在线观看免费完整版| 亚洲成人中文字幕| 成年女人毛片免费视频| 色爽黄1000部免费软件下载| 亚洲精品无码午夜福利中文字幕 | www免费黄色网| 久久亚洲AV成人无码软件| 毛片视频免费观看| fc2免费人成在线| 亚洲自偷精品视频自拍| 日韩成全视频观看免费观看高清| 一区二区免费电影| 亚洲成人免费在线观看| 亚洲不卡无码av中文字幕| 99爱在线观看免费完整版| 亚洲日韩看片无码电影| 国产成人麻豆亚洲综合无码精品|