亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

Spring Bean基本管理實例詳解

2019-11-26 14:55:02
字體:
來源:轉載
供稿:網友

本文實例講述了Spring Bean基本管理。分享給大家供大家參考,具體如下:

一、使用setter方式完成依賴注入

下面是Bean和beans-config.xml文件。

public class HelloBean {   private String helloWord;   //...省略getter、setter方法   }
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans>   <bean id="helloBean"      class="onlyfun.caterpillar.HelloBean">     <property name="helloWord">       <value>Hello!Justin!</value>     </property>   </bean> </beans>
public class SpringDemo {   public static void main(String[] args) {     Resource rs = new FileSystemResource("beans-config.xml");     BeanFactory factory = new XmlBeanFactory(rs);     HelloBean hello = (HelloBean) factory.getBean("helloBean");     System.out.println(hello.getHelloWord());   } }

二、使用constructor方式完成注入

public class HelloBean {   private String name;   private String helloWord;   // 建議有要無參數建構方法   public HelloBean() {   }   public HelloBean(String name, String helloWord) {     this.name = name;     this.helloWord = helloWord;   }   //...省略getter、setter方法   }
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans>   <bean id="helloBean"      class="onlyfun.caterpillar.HelloBean">     <constructor-arg index="0">       <value>Justin</value>     </constructor-arg>     <constructor-arg index="1">       <value>Hello</value>     </constructor-arg>   </bean> </beans>
public class SpringDemo {   public static void main(String[] args) {     ApplicationContext context =       new FileSystemXmlApplicationContext("beans-config.xml");     HelloBean hello = (HelloBean) context.getBean("helloBean");     System.out.print("Name: ");     System.out.println(hello.getName());     System.out.print("Word: ");     System.out.println(hello.getHelloWord());   } }

三、屬性參考

public class HelloBean {   private String helloWord;   private Date date;   //...省略getter、setter方法   }
<beans>   <bean id="dateBean" class="java.util.Date"/>   <bean id="helloBean" class="onlyfun.caterpillar.HelloBean">     <property name="helloWord">       <value>Hello!</value>     </property>     <property name="date">       <ref bean="dateBean"/>     </property>   </bean> </beans>
public class SpringDemo {   public static void main(String[] args) {     ApplicationContext context =       new FileSystemXmlApplicationContext("beans-config.xml");     HelloBean hello = (HelloBean) context.getBean("helloBean");     System.out.print(hello.getHelloWord());     System.out.print(" It's ");     System.out.print(hello.getDate());     System.out.println(".");   } }

四、“byType”自動綁定

將“三”中的配置文件改為下面,即可完成bean屬性的按類型自動綁定。

<beans>   <bean id="dateBean" class="java.util.Date"/>   <bean id="helloBean" class="onlyfun.caterpillar.HelloBean" autowire="byType">     <property name="helloWord">       <value>Hello!</value>     </property>   </bean> </beans>

五、“byName”自動綁定

將“三”中的配置文件改為下面,即可完成bean屬性的按名稱自動綁定。

<beans>   <bean id="dateBean" class="java.util.Date"/>   <bean id="helloBean" class="onlyfun.caterpillar.HelloBean" autowire="byName">     <property name="helloWord">       <value>Hello!</value>     </property>   </bean> </beans>

六、“constructor”自動綁定

將“三”中的配置文件改為下面,即可完成bean屬性的按構造方法自動綁定。在建立依賴關系時,Srping容器會試圖比對容器中的Bean實例類型,及相關的構造方法上的參數類型,看看在類型上是否符合,如果有的話,則選用該構造方法來建立Bean實例。如果無法綁定,則拋出org.springframework.beans.factory.UnsatisfiedDependencyException異常。

<beans>   <bean id="dateBean" class="java.util.Date"/>   <bean id="helloBean" class="onlyfun.caterpillar.HelloBean" autowire="constructor">     <property name="helloWord">       <value>Hello!</value>     </property>   </bean> </beans>

六、“autodetect”自動綁定

將“三”中的配置文件改為下面,即可完成bean屬性的自動綁定,這個自動綁定是Spring會嘗試用入constructor來處理依賴關系的建立,如果不行,則再嘗試用byType類建立依賴關系。

<beans>   <bean id="dateBean" class="java.util.Date"/>   <bean id="helloBean" class="onlyfun.caterpillar.HelloBean" autowire="autodetect">     <property name="helloWord">       <value>Hello!</value>     </property>   </bean> </beans>

七、依賴檢查方式

在自動綁定中,由于沒辦法從定義文件中,清楚地看到是否每個屬性都完成設定,為了確定某些依賴關系確實建立,您可以假如依賴檢查,在<bean>標簽使用時設定"dependency-check",可以有四種依賴檢查方式:simple、objects、all、none。

simple:只檢查簡單的類型(像原生數據類型或字符串對象)屬性是否完成依賴關系,。
objects:檢查對象類型的屬性是否完成依賴關系。
all:則檢查全部的屬性是否完成依賴關系。
none:設定是默認值,表示不檢查依賴性。

<beans>   <bean id="dateBean" class="java.util.Date"/>   <bean id="helloBean" class="onlyfun.caterpillar.HelloBean" autowire="autodetect" dependeny-check="all">     <property name="helloWord">       <value>Hello!</value>     </property>   </bean> </beans>

八、集合對象注入

對于像數組、List、Set、Map等集合對象,在注入前必須填充一些對象至集合中,然后再將集合對象注入至所需的Bean時,也可以交由Spring的IoC容器來自動維護或生成集合對象,并完成依賴注入。

public class SomeBean {   private String[] someStrArray;   private Some[] someObjArray;   private List someList;   private Map someMap;   public String[] getSomeStrArray() {     return someStrArray;   }   public void setSomeStrArray(String[] someStrArray) {     this.someStrArray = someStrArray;   }   public Some[] getSomeObjArray() {     return someObjArray;   }   public void setSomeObjArray(Some[] someObjArray) {     this.someObjArray = someObjArray;   }   public List getSomeList() {     return someList;   }   public void setSomeList(List someList) {     this.someList = someList;   }   public Map getSomeMap() {     return someMap;   }   public void setSomeMap(Map someMap) {     this.someMap = someMap;   } }public class Some {   private String name;   public String getName() {     return name;   }   public void setName(String name) {     this.name = name;   }   public String toString() {     return name;   } }
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans>   <bean id="some1" class="onlyfun.caterpillar.Some">     <property name="name">       <value>Justin</value>     </property>   </bean>   <bean id="some2" class="onlyfun.caterpillar.Some">     <property name="name">       <value>momor</value>     </property>   </bean>   <bean id="someBean" class="onlyfun.caterpillar.SomeBean">     <property name="someStrArray">       <list>         <value>Hello</value>         <value>Welcome</value>       </list>     </property>     <property name="someObjArray">       <list>          <ref bean="some1"/>          <ref bean="some2"/>       </list>     </property>     <property name="someList">       <list>          <value>ListTest</value>          <ref bean="some1"/>          <ref bean="some2"/>       </list>     </property>     <property name="someMap">       <map>          <entry key="MapTest">            <value>Hello!Justin!</value>          </entry>          <entry key="someKey1">            <ref bean="some1"/>          </entry>       </map>     </property>   </bean> </beans>
public class SpringDemo {   public static void main(String[] args) {     ApplicationContext context =       new FileSystemXmlApplicationContext(           "beans-config.xml");     SomeBean someBean =       (SomeBean) context.getBean("someBean");     // 取得數組型態依賴注入對象     String[] strs =       (String[]) someBean.getSomeStrArray();     Some[] somes =       (Some[]) someBean.getSomeObjArray();     for(int i = 0; i < strs.length; i++) {       System.out.println(strs[i] + ","           + somes[i].getName());     }     // 取得List型態依賴注入對象     System.out.println();     List someList = (List) someBean.getSomeList();     for(int i = 0; i < someList.size(); i++) {       System.out.println(someList.get(i));     }     // 取得Map型態依賴注入對象     System.out.println();     Map someMap = (Map) someBean.getSomeMap();     System.out.println(someMap.get("MapTest"));     System.out.println(someMap.get("someKey1"));   } }

希望本文所述對大家Java程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91av在线免费观看视频| 亚洲精品国产品国语在线| 日韩国产在线看| 久久久久久国产精品三级玉女聊斋| 亚洲缚视频在线观看| 性日韩欧美在线视频| 色综合久久久888| 久久精品国产2020观看福利| 亚洲国产精品成人va在线观看| 亚洲香蕉成视频在线观看| 九九精品在线播放| 国产乱肥老妇国产一区二| 亚洲国产精品福利| 日韩在线精品视频| 4444欧美成人kkkk| 91国偷自产一区二区三区的观看方式| 亚洲成色777777在线观看影院| 国内精品一区二区三区四区| 日韩美女写真福利在线观看| 亚洲人成电影网站色xx| 疯狂欧美牲乱大交777| 在线成人激情黄色| 社区色欧美激情 | 91福利视频在线观看| 亚洲精品免费在线视频| 国产色婷婷国产综合在线理论片a| 欧美极品少妇与黑人| 欧美黑人又粗大| 亚洲电影中文字幕| 欧美专区第一页| 懂色av中文一区二区三区天美| 伊人av综合网| 成人午夜一级二级三级| www欧美日韩| 欧美日韩亚洲高清| 国产精品无av码在线观看| 国产精品老牛影院在线观看| 麻豆国产精品va在线观看不卡| 国产精品一区二区三区在线播放| 亚洲精品av在线| 91九色单男在线观看| 久久久久亚洲精品国产| 日本亚洲欧美三级| 国产亚洲精品久久久优势| 91夜夜揉人人捏人人添红杏| 欧美成人三级视频网站| 91欧美日韩一区| 亚洲福利视频专区| 国产91色在线播放| 国产小视频91| 在线成人中文字幕| 欧美在线中文字幕| 日韩精品中文字| 国产精品久久久久久久久久东京| 国产精品揄拍一区二区| 亚洲人成自拍网站| 亚洲久久久久久久久久久| 国产精品18久久久久久首页狼| 欧美成人精品不卡视频在线观看| 57pao成人永久免费视频| 亚洲精品视频免费在线观看| 日本中文字幕成人| 国产精品吹潮在线观看| 国产精品久久久久久av福利软件| 国产91精品视频在线观看| 韩国v欧美v日本v亚洲| 亚洲精品视频在线观看视频| 亚洲网站在线观看| 91精品国产91久久久久福利| 97激碰免费视频| 国产成人福利夜色影视| 国产精品网红福利| 亚洲成色www8888| 91高清视频免费观看| 国产精品免费看久久久香蕉| 久久亚洲精品中文字幕冲田杏梨| 国产精品高潮呻吟久久av无限| 亚洲天天在线日亚洲洲精| 国产美女久久久| 色综合色综合久久综合频道88| 在线视频精品一| 在线亚洲国产精品网| 亚洲美女av在线| 日韩在线国产精品| 欧美国产欧美亚洲国产日韩mv天天看完整| 国产国产精品人在线视| 久久久噜久噜久久综合| 欧美激情免费观看| 91亚洲精华国产精华| 亚洲永久在线观看| 中文字幕国产日韩| 97人人模人人爽人人喊中文字| 亚洲欧美日韩视频一区| 久久久亚洲国产| 日韩中文有码在线视频| 欧美贵妇videos办公室| 亚洲成人久久一区| 中文字幕日韩专区| 欧美视频在线观看 亚洲欧| 亚洲国产91精品在线观看| 97av在线播放| 欧美理论电影网| 精品久久久国产| 日韩中文字幕视频在线观看| 日韩精品免费电影| 亚洲一级一级97网| 亚洲成人国产精品| 91极品女神在线| 亚洲91精品在线观看| 国产噜噜噜噜噜久久久久久久久| 欧美日韩在线免费| 成年无码av片在线| 丝袜一区二区三区| 国产精品一二三在线| 欧美午夜视频一区二区| 亚洲欧美日韩高清| 亚洲三级 欧美三级| 欧美成人在线影院| 在线中文字幕日韩| 欧美电影免费看| 国产精品爽爽爽爽爽爽在线观看| 成人美女av在线直播| 麻豆精品精华液| 国产精品情侣自拍| 日韩美女av在线免费观看| 精品成人69xx.xyz| 欧美在线一区二区视频| 亚洲精品自在久久| 91亚洲精品在线| 久久久亚洲国产天美传媒修理工| 亚洲免费视频一区二区| 欧美在线免费看| 亚洲一区中文字幕在线观看| 久久久久久中文| 国产综合福利在线| 亚洲欧美一区二区三区久久| 日韩电视剧在线观看免费网站| 国产精品都在这里| 国产精品久久久久久久久粉嫩av| 欧洲亚洲在线视频| 久久人人爽亚洲精品天堂| 亚洲美女免费精品视频在线观看| 成人免费网站在线观看| 欧美成在线观看| 中文字幕精品av| 亚洲有声小说3d| 成人精品一区二区三区电影黑人| 亚洲自拍小视频| 成人国产精品日本在线| 国产主播精品在线| 亚洲国产古装精品网站| 91国内免费在线视频| 亚洲九九九在线观看| 精品久久久久人成| 日韩在线视频播放| 亚洲a在线观看| 日韩精品久久久久久福利| 岛国av午夜精品| 日韩69视频在线观看| 国产成人精品优优av| 欧美激情手机在线视频| 亚洲精品456在线播放狼人| 日韩成人中文字幕在线观看| 国产精品男女猛烈高潮激情|