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

这样我们就成功地将所有集合属性赋值了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值