日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

[置顶] Spring中DI设置器注入

發布時間:2025/4/16 javascript 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [置顶] Spring中DI设置器注入 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Java的反射機制可以說是在Spring中發揮的淋漓盡致,下面要看的代碼就是通過反射機制來實現向一個類注入其實際依賴的類型,這個過程的實現會交由Spring容器來幫我們完成。

JavaBean中針對屬性一般都有一組設置/獲取方法(setXXX/getXXX),這兩個方法可以由IDE給我們自動產生,當然你也可以手動進行編寫,這是你的自由,下面的例子就是Spring中利用setter方法來實現依賴注入。

?

源代碼如下:

package com.pp; //一個普通的JavaBean public class Person {//人的名字private String S_name;private String S_addr;private int age;//getter方法public int getS_Age() {return age;}//setter方法public void setS_Age(int age) {this.age = age;}//setter方法public String getaddr() {return S_addr;}//getter方法public void setaddr(String addr) {S_addr = addr;}//構造函數public Person(){}//getter方法public String getName() {return S_name;}//setter方法public void setName(String name) {S_name = name;}; }

有了這個普通的JavaBean,我們要利用Spring容器來實現屬性的注入,這里就需要Spring的配置文件,Spring的配置文件如下:

<?xml version="1.0" encoding="UTF-8"?> <beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:p="http://www.springframework.org/schema/p"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"><bean id="sentence" class="com.pp.Sentence"/><bean id="person" class="com.pp.Person"><!-- 從這里可以看出的是屬性名是setter方法里去掉set的部分,即setXXX中的XXX而與具體的屬性無關 --><property name="name" value="pptest"></property><!-- 這里你完全可以把setaddr里的參數改成setaddr(String name),并不會報錯,因為判斷的依據是setXXX即XXX --><!-- 但如果你改成setS_addr這里就要錯了,不信你可以試,如果改成setS_addr,則下面的name需要改成S_addr --><property name="addr" value="Beijing"></property><!-- 這里就是上面的一個例子,類的屬性名為age,但這里的name卻為S_Age --><!-- 同時這里也要說明的一個問題是類里面為int,但這里卻是字符串類型,這個你不用擔心,Spring在進行注入時會自動根據參數的類型進行類型 的轉化 --><property name="S_Age" value="22"></property></bean> </beans>

配置文件中我已經注釋的很清楚了,就不做說明了

下面是一個測試文件

import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.xml.XmlBeanFactory; import org.springframework.core.io.ClassPathResource; public class MainTest { public static void main(String[] args) {BeanFactory factory=new XmlBeanFactory(new ClassPathResource("person.xml"));Person person=(Person)factory.getBean("person");System.out.println(person.getName());System.out.println(person.getaddr());System.out.println(person.getS_Age()); } }

如果一切正常的話,應該會打印出如下的結果:

pptest
Beijing
22

?

上面向類里面注入的均是內置類型,其實不僅可以注入內置類型,還可以向里面注入外部類對象,下面就是一個例子,只顯示增加的部份,增加的部分,是假設每一個人均有說一句話,這句話的實際內容是由Sentence這個類決定的

源代碼:

//這是一個普通的類,當然這樣設計不好,在此僅為說明一下 public class Sentence{//類里面的方法,表示每一個人均說的是同樣的一句話public void say() {System.out.println("Hello");} }

下面是在類Person使用剛才的Sentence這個類,以下只列出新增代碼

//代表要說的話private Sentence sce;//setter方法public Sentence getSce() {return sce;}//getter方法public void setSce(Sentence sce) {this.sce = sce;}

以下是配置文件,同樣也只列出新增的一部份

?

<bean id="sentence" class="com.pp.Sentence"/><bean id="person" class="com.pp.Person"><!-- 從這里可以看出的是屬性名是setter方法里去掉set的部分,即setXXX中的XXX而與具體的屬性無關 --><property name="name" value="pptest"></property><!-- 這里你完全可以把setaddr里的參數改成setaddr(String name),并不會報錯,因為判斷的依據是setXXX即XXX --><!-- 但如果你改成setS_addr這里就要錯了,不信你可以試,如果改成setS_addr,則下面的name需要改成S_addr --><property name="addr" value="Beijing"></property><!-- 這里就是上面的一個例子,類的屬性名為age,但這里的name卻為S_Age --><!-- 同時這里也要說明的一個問題是類里面為int,但這里卻是字符串類型,這個你不用擔心,Spring在進行注入時會自動根據參數的類型進行類型 的轉化 --><property name="S_Age" value="22"></property><!-- 引入在外部定義的bean,這里就是上面的一個bean的id --><property name="Sce" ref="sentence"></property></bean>

?

測試文件里里面只需填加一行即可:

person.getSce().say();

最終的結果如下:

pptest
Beijing
22
Hello

上面的配置文件中,是用外部Bean注入的,我們也可以使用內部Bean注入,所謂內部Bean注入,是直接把Bean的定義寫在property屬性里,如下是更改后的配置文件

<!-- <bean id="sentence" class="com.pp.Sentence"/>--><bean id="person" class="com.pp.Person"><!-- 從這里可以看出的是屬性名是setter方法里去掉set的部分,即setXXX中的XXX而與具體的屬性無關 --><property name="name" value="pptest"></property><!-- 這里你完全可以把setaddr里的參數改成setaddr(String name),并不會報錯,因為判斷的依據是setXXX即XXX --><!-- 但如果你改成setS_addr這里就要錯了,不信你可以試,如果改成setS_addr,則下面的name需要改成S_addr --><property name="addr" value="Beijing"></property><!-- 這里就是上面的一個例子,類的屬性名為age,但這里的name卻為S_Age --><!-- 同時這里也要說明的一個問題是類里面為int,但這里卻是字符串類型,這個你不用擔心,Spring在進行注入時會自動根據參數的類型進行類型 的轉化 --><property name="S_Age" value="22"></property><!-- 引入在外部定義的bean,這里就是上面的一個bean的id <property name="Sce" ref="sentence"></property>--><property name="Sce"><!-- 內部的Bean不能被外部的Bean引用,因此在里面加入id屬性,是沒有什么用的,內部Bean只能供本類使用,這里就是Person類的一個對象 --><bean class="com.pp.Sentence"></bean></property></bean>

測試文件可以不加任何改動,但最終的運行結果是一樣的

轉載于:https://www.cnblogs.com/jiangu66/p/3238854.html

總結

以上是生活随笔為你收集整理的[置顶] Spring中DI设置器注入的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 在线精品视频免费观看 | 特黄aaaaaaaaa毛片免费视频 | 精品国产欧美一区二区 | 国产一区二区自拍 | 欧美在线中文字幕 | 操操操操操操操操操操 | 午夜毛片在线观看 | 国产视频手机在线 | 女同毛片一区二区三区 | 最近中文字幕在线 | 国内自拍偷拍网 | 国产精品一线 | 国产色在线 | 国产免费一区二区三区 | 深夜免费在线视频 | 日韩欧美国产中文字幕 | 久久美| 强行挺进白丝老师翘臀网站 | 性色av一区二区三区 | 日韩性xxx | 国产骚b | 成年人三级视频 | 亚色中文字幕 | 毛片无遮挡 | 午夜亚洲精品 | 国内外成人在线视频 | 国产艳妇疯狂做爰视频 | 亚洲永久精品在线观看 | 欧美日韩一区二区不卡 | www.尤物| 鲁丝一区二区三区 | 精品久久一二三区 | 又黄又免费的视频 | 欧美人体一区二区三区 | 亚洲成人mv| 色综合婷婷| 中文字幕四区 | 极品尤物在线观看 | 婷婷久久精品 | 91精品国产一区二区三区香蕉 | 久久亚洲精华国产精华液 | 香蕉av一区二区 | аⅴ资源天堂资源库在线 | 欧美一级片免费看 | 手机在线成人av | 激情五月av | 久久人妻少妇嫩草av无码专区 | 欲求不满在线小早川怜子 | 重口味av | 国产999视频 | 与亲女洗澡时伦了毛片 | 久久久久国产一区 | 欧美黑人激情 | 亚洲天堂va | 在线日韩 | 日日噜噜夜夜狠狠久久波多野 | av黄色片在线观看 | 肉丝美足丝袜一区二区三区四 | xxxwww在线观看| 黄色av网站网址 | 成年性生交大片免费看 | 奴性女会所调教 | 天天透天天干 | 久操精品在线 | 成人夜色 | 免费裸体美女网站 | 欧美aaaaa | 日本福利在线 | 精品国产视频一区二区三区 | 成人网在线视频 | 国产精品久久久久久久久久免费看 | 老司机精品视频在线 | 亚洲女女做受ⅹxx高潮 | 免费人成在线观看视频播放 | 国产7777777| 亚洲制服丝袜在线播放 | 天堂а√在线最新版中文在线 | 黄瓜视频91| 国产成人精品一区二区三区福利 | 精品一区在线观看视频 | 在线毛片网站 | 国产农村妇女精品一二区 | 动漫美女被到爽 | 国产亚洲精品aaaaaaa片 | 欧美xxxxbbb | 男人av网站 | 最新国产一区 | 97人妻一区二区精品视频 | 亚洲国产高清国产精品 | 激情婷婷在线 | 老汉色老汉首页av亚洲 | 久久草av| 欧美少妇一级片 | 韩国甜性涩爱 | 美足av电影 | 黑人乱码一区二区三区av | 日韩在线视频你懂的 | 国产区一二三 | 国产精品人人妻人人爽人人牛 |