Spring中标签属性name和id的区别

bean元素的id和name属性的区别

元素的id属性和 name属性的区别

  1. 一般情况下,配置一个Bean时,通过指定一个id属性作为Bean的名称.

  2. id 属性在IoC容器中必须是唯一的

  3. id 的命名要满足XML对ID属性命名规范:

必须以字母开始,可以使用字母、数字、连字符、下划线、句话、冒号

  1. 使用name属性,就可以使用很多特殊字符,早期在struts1 和 spring整合

name中含有/ ,使用id会报错

  1. 如果Bean的名称中含有特殊字符,就需要使用name属性

例如:

  1. 因为name属性可以相同,所以后出现Bean会覆盖之前出现的同名的Bean

xml的解析是从上到下的,所以先配置的bean会被加载到内存中,那么后配置的具有相同name的bean就会覆盖前面的.

  1. 如果bean元素没有id只有name ,name 属性值可以作为id 使用

===============================================================================
bean元素scope属性配置Bean的作用域

元素scope属性,在spring规范中scope属性有五个取值:

  1. scope=”singleton” 单例,在Spring IoC容器中仅存在一个Bean实例(默认的scope)

默认情况下:托管给spring默认在spring容器中只有一个Bean实例对象.

  1. scope=”prototype” 多例,每次从容器中调用Bean时,都返回一个新的实例,即每次调用getBean()时,相当于执行new XxxBean()

  2. scope=”request” 用于web开发,该作用域仅适用于WebApplicationContext环境.

每次HTTP请求都会创建一个新的Bean,将Bean放入request范围,request.setAttribute(“xxx”),在同一个request 获得同一个Bean

  1. scope=”session” 用于web开发, 该作用域仅适用于WebApplicationContext环境.

同一个HTTP Session 共享一个Bean,不同Session使用不同Bean,将Bean 放入Session范围

  1. scope=”globalSession”该作用域仅适用于WebApplicationContext环境.

一般用于Porlet应用环境 , 分布式系统存在全局session概念,如果不是porlet环境,globalSession 等同于Session . Porlet是Servlet的一个升级,Porlet主要用于分布式系统.

在开发中主要使用 scope=”singleton”、 scope=”prototype”

===============================================================================

bean元素的init-method和destory-method属性

这两个属性只是bean生命周期中一部分内容,完成的Bean生命周期详见:

本文档中Bean的生命周期

Spring初始化bean或销毁bean时,有时需要作一些处理工作,

因此spring可以在创建和拆卸bean的时候调用bean的两个生命

周期方法。

init-method=“setup”

destory-method=“teardown”/>

  1. init-method=“setup”用于指定:当bean被载入到容器的时候调用setup方法.

类似于Servlet的init()方法.

  1. destory-method=“teardown”当bean从容器中删除的时候调用teardown.

类似于Serlvet的destory方法

注意destory-method属性只在scope= singleton有效

  1. 初始化方法和销毁方法一般都是无返回值,无参数的方法.

  2. 销毁方法必须关闭Spring容器才会被调用.即

ClassPathXmlApplicationContext applicationContext = new

ClassPathXmlApplicationContext(“applicationContext.xml”);

applicationContext.close();

5.web容器中会自动调用,但是main函数或测试用例需要手动调用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring ,bean 子标签的 property 标签用于设置一个 bean 的属性。property 标签属性包括: 1. name:属性名,用于指定要设置的 bean 的属性名。 2. value:属性值,用于指定要设置的 bean 的属性值。 3. ref:引用,用于指定要设置的 bean 的属性值是另一个 bean 的引用。 4. index:索引,用于指定要设置的 bean 的属性是一个数组或 List 的元素,需要指定元素的索引值。 5. key:键,用于指定要设置的 bean 的属性是一个 Map 的元素,需要指定元素的键值。 例如,下面是一个使用 property 标签设置 bean 属性的示例: ``` <bean id="person" class="com.example.Person"> <property name="name" value="John"/> <property name="age" value="30"/> <property name="address" ref="address"/> <property name="hobbies"> <list> <value>Reading</value> <value>Traveling</value> <value>Photography</value> </list> </property> <property name="skills"> <map> <entry key="Java" value="Expert"/> <entry key="Python" value="Intermediate"/> <entry key="SQL" value="Beginner"/> </map> </property> </bean> <bean id="address" class="com.example.Address"> <property name="street" value="123 Main St"/> <property name="city" value="New York"/> <property name="state" value="NY"/> <property name="zip" value="10001"/> </bean> ``` 在上面的示例,我们创建了一个名为 person 的 bean,并设置了它的五个属性:name,age,address,hobbies 和 skills。其,address 是一个引用类型的属性,指向另一个名为 address 的 bean;hobbies 是一个 List 类型的属性,包含三个元素;skills 是一个 Map 类型的属性,包含三个键值对。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值