java ssh cpu_初学Java ssh之Spring 第四篇
今天我來學習學習Spring中Bean。
在Spring中原來還有標簽啊,它相當于標簽的老爸,老爸可以有很多個兒子,但是老爸只有一個哦。
也就是說一個標簽內可以有多個標簽,每個標簽代表一個java實例。
定義時,需要注意兩個屬性,一個是id,一個是class。
id是標簽的唯一標示符,容器對其的訪問、管理、注入都通過這個屬性來完成,所以它也是唯一的。
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模式。
舉個例子:
session和request作用域的范圍很相似,不同的是session指每次Http Session請求都會有效,而request則是每次Http請求都有效。
為此,我們需要有兩種配置方式:采用Listener或者Filter配置。
當使用Servlet2.4以上規范的Web容器時,可在Web容器下的web.xml文件中增加如下配置,該Listerner負責為request作用域負責:
1
2 ...3
4 org.springframework.web.context.request.RequestContextListener
5
6 ...7
當使用2.4以下規范的就不能用這個配置了,只能改為Filter配置:
1
2 ...3
4 requestContextFilter
5 org.springframework.web.filter.RequestContextFilter
6
7 requestContextFilter
8 /*
9
10
11 ...12
一旦配置上面二者之一,就可以在Spring配置文件中使用request和session作用域了。
如果需要為Bean屬性值是容器中另一個bean實例,需要使用元素,使用該元素會有兩個屬性:
bean:引用不在同一個XML文件中的另一個bean實例的id屬性值。
local:引用在同一個XML文件中其他bean實例的id屬性值。舉一個例子:
1
2
3
4
5
6
7
它還有一種簡潔的寫法:
1
2
3
4
此處簡潔了ref元素,將它并入了property的屬性中,當然這么寫也就不區分ref元素中的local和bean屬性了。
此外,如果bean的屬性值是個集合的話,則需要使用集合元素,、、和分別用來設置類型為List、Set、Map和Properties的集合屬性值。
下面我們來改造一個之前寫的com/sep/basic/service/impl/Lenovo類,將其中包含多個集合屬性。
1 packagecom.sep.basic.service.impl;2
3 importjava.util.List;4 importjava.util.Map;5 importjava.util.Properties;6 importjava.util.Set;7
8 importcom.sep.basic.service.Computer;9 importcom.sep.basic.service.Key;10
11 public class Lenovo implementsComputer{12 //下面是集合屬性
13 private Listsize;14 privateSet price;15 private Mapkey;16 privateProperties health;17 //private Key key;18
19 //各屬性的setter方法
20 public void setSize(Listsize) {21 this.size =size;22 }23
24
25 public voidsetPrice(Set price) {26 this.price =price;27 }28
29
30 public void setKey(Mapkey) {31 this.key =key;32 }33
34
35 public voidsetHealth(Properties health) {36 this.health =health;37 }38
39 @Override40 public voiduseKey() {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
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
8
9
10
11
12
13 17'
14 21'
15 30'
16
17
18
19
20
21
22 普通的字符串
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 正常
48 正常
49
50
51
52
53
54
55
這樣我們就成功地將所有集合屬性賦值了。
總結
以上是生活随笔為你收集整理的java ssh cpu_初学Java ssh之Spring 第四篇的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html加动画不改变高度,怎么为不定高度
- 下一篇: Java并发编程实战————恢复中断