国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

初學Java ssh之Spring 第四篇

2019-11-14 21:14:28
字體:
來源:轉載
供稿:網友
初學java ssh之SPRing 第四篇

  今天我來學習學習Spring中Bean。

  在Spring中原來還有<beans.../>標簽啊,它相當于<bean.../>標簽的老爸,老爸可以有很多個兒子,但是老爸只有一個哦。

  也就是說一個<beans.../>標簽內可以有多個<bean...>標簽,每個<bean.../>標簽代表一個java實例。

  定義<bean...>時,需要注意兩個屬性,一個是id,一個是class。

  id是<bean.../>標簽的唯一標示符,容器對其的訪問、管理、注入都通過這個屬性來完成,所以它也是唯一的。

  class呢,是該bean的具體實現類,因為Spring要通過class來完成對bean的實例化,所以其必須是完整的類名,不能是接口哦!

  還可以用name屬性為其增加一個別名。

  當Spring創建一個bean實例時,還為其指定了特定的作用域:

    singleton:單例模式,使用singleton定義的bean只有一個實例。

    prototype:原型模式,每次通過容器的getbean方法去調用prototype定義的bean時,都會創建一個實例。

    request:每次http請求都會產生一個bean實例。

    seesion:與request相似,每次http session請求時,都會產生一個bean實例。

    global session:(這個不太懂啊)每個全局的http session對應一個bean實例。

  不指定作用域時,默認為singleton模式。

  舉個例子:<bean id="test" class="..." scope="singleton"/>

  session和request作用域的范圍很相似,不同的是session指每次Http Session請求都會有效,而request則是每次Http請求都有效。

  為此,我們需要有兩種配置方式:采用Listener或者Filter配置。

  當使用Servlet2.4以上規范的Web容器時,可在Web容器下的web.xml文件中增加如下配置,該Listerner負責為request作用域負責:

1 <web-app>2      ...3       <listener>4             <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>5       </listener>6      ...7 </web-app>

  當使用2.4以下規范的就不能用這個配置了,只能改為Filter配置:

 1 <web-app> 2     ... 3     <filter> 4         <filter-name>requestContextFilter</filter-name> 5         <filter-class>org.springframework.web.filter.RequestContextFilter</filter-class> 6         <filter-mapping> 7             <filter-name>requestContextFilter</filter-name> 8             <url-pattern>/*</url-pattern> 9         </filter-mapping>10     </filter>11     ...12 </web-app>

  一旦配置上面二者之一,就可以在Spring配置文件中使用request和session作用域了。

  

  如果需要為Bean屬性值是容器中另一個bean實例,需要使用<ref...>元素,使用該元素會有兩個屬性:

  bean:引用不在同一個XML文件中的另一個bean實例的id屬性值。

  local:引用在同一個XML文件中其他bean實例的id屬性值。舉一個例子:

1 <bean id="A" class="com.basic.test.A"/>2 <bean id="B" class="com.basic.test.B">3     <property name="c">4         <!-- 引用容器中另一個bean-->5         <ref local="A"/>6     </property>7 </bean>

  它還有一種簡潔的寫法:

1 <bean id="A" class="com.basic.test.A"/>2 <bean id="B" class="com.basic.test.B">3     <property name="c" ref="A"/>4 </bean>

  此處簡潔了ref元素,將它并入了property的屬性中,當然這么寫也就不區分ref元素中的local和bean屬性了。

  此外,如果bean的屬性值是個集合的話,則需要使用集合元素,<list.../>、<set.../>、<map.../>和<props.../>分別用來設置類型為List、Set、Map和Properties的集合屬性值。

  下面我們來改造一個之前寫的com/sep/basic/service/impl/Lenovo類,將其中包含多個集合屬性。

 1 package com.sep.basic.service.impl; 2  3 import java.util.List; 4 import java.util.Map; 5 import java.util.Properties; 6 import java.util.Set; 7  8 import com.sep.basic.service.Computer; 9 import com.sep.basic.service.Key;10 11 public class Lenovo implements Computer{12     //下面是集合屬性13     private List<String> size;14     private Set price;15     private Map<String , Key> key;16     private Properties health;17     //private Key key;18     19     //各屬性的setter方法20     public void setSize(List<String> size) {21         this.size = size;22     }23 24 25     public void setPrice(Set price) {26         this.price = price;27     }28 29 30     public void setKey(Map<String, Key> key) {31         this.key = key;32     }33 34 35     public void setHealth(Properties health) {36         this.health = health;37     }38 39     @Override40     public void useKey() {41         System.out.println(size);42         System.out.println(price);43         System.out.println(key);44         System.out.println(health);45     }46 47 }

  下面來看一下我們的applicationContext.xml的配置代碼:

 1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans 3     xmlns="http://www.springframework.org/schema/beans" 4     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 5     xmlns:p="http://www.springframework.org/schema/p" 6     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">     7     <!-- 將配置Lenovo實例 --> 8     <bean id="lenovo" class="com.sep.basic.service.impl.Lenovo"> 9         <property name="size">10             <!-- 為list屬性配置屬性值 -->11             <list>12                 <!-- 為每個value、ref、bean配置一個List元素 -->13                 <value>17'</value>14                 <value>21'</value>15                 <value>30'</value>16             </list>17         </property>18         <property name="key">19             <!-- 為Set設置屬性值 -->20             <set>21                 <!-- 為每個value、ref、bean配置一個Set元素 -->22                 <value>普通的字符串</value>23                 <bean class="com.sep.basic.service.impl.LogicTech"/>24                 <ref local="logicTech"/>25             </set>26         </property>27         <property name="cpu">28             <!-- 為Map類型設置屬性值 -->29             <map>30                 <!-- 每個entry配置一個key-value對 -->31                 <entry key="cpu1" value="intel"/>32                 <entry key="cpu2" value="amd"/>33                 <entry key="cpu3" value="other"/>34             </map>35         </property>36         <property name="keyType">37             <!-- 為Map類型設置屬性值 -->38             <map>39                 <!-- 每個entry配置一個key-value對 -->40                 <entry key="羅技鍵盤" value-ref="logicTech"/>41             </map>42         </property>43         <property name="health">44             <!-- 為properties類型設置屬性值 -->45             <!-- 為每一個prop元素配置一個屬性項,其中key指定屬性名 -->46             <props>47                 <prop key="溫度">正常</prop>48                 <prop key="存取速度">正常</prop>49             </props>50         </property>51     </bean>52     <!-- 將配置LogicTech實例-->53      <bean id="logicTech" class="com.sep.basic.service.impl.LogicTech"/>54     55 </beans>

  這樣我們就成功地將所有集合屬性賦值了。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 肇州县| 巴彦淖尔市| 腾冲县| 通河县| 乌鲁木齐市| 平江县| 利津县| 铜梁县| 额敏县| 大同市| 镇巴县| 靖远县| 绥阳县| 漳平市| 鹤山市| 阿拉善右旗| 裕民县| 定南县| 怀柔区| 太和县| 玉林市| 吐鲁番市| 芦溪县| 紫云| 内丘县| 新宁县| 江山市| 靖安县| 克什克腾旗| 九龙坡区| 蒙自县| 万山特区| 紫金县| 休宁县| 应用必备| 鹤庆县| 阳曲县| 萨迦县| 中江县| 甘孜| 尉犁县|