Spring配置bean属性

声明:这是转载的

方便自己学习用!

来源地址:http://wjuan222-gmail-com.iteye.com/blog/760827


配置 <bean> 的属性

 

属性名

作用

可选值

默认值

是否必选

Id

命名 bean

 

 

必选

Class

实例化的类

 

 

必选

Factory-method

指定工厂方法

 

 

可选

Factory-bean

指定工厂类

 

 

可选

Scope

Bean 的作用域

Singleton | prototype | request | session | global session

Singleton

可选

Lazy-int

延迟初始化 bean

True|false|default

Default

可选

Init-method

初始化回调

 

 

可选

Destroy-method

析构回调

 

 

可选

Parent

继承 bean

 

 

可选

 

id 属性:命名 bean

id 在当前 ioc 容器中必须唯一。

class 属性:指定类名

大多数情况下,容器将直接通过反射调用指定类的构造器来创建 bean ,在极少情况下,容器将调用类的静态工厂方法来创建 bean 实例, class 属性将用来指定实际具有静态工厂方法的类

factory-method 属性:指定工厂方法

指定的是工厂方法

 

 

scope 属性:设置 bean 作用域

singleton : spring ioc 容器中只会存在一个共享的 bean 实例,每次请求返回 bean 的同一实例

prototype :每次对该 bean 请求时都会创建一个新的 bean 实例。根据经验:对于所有有状态的 bean 应该使用prototype 作用域,而对无状态的 bean 则应该使用 singletom 作用域

request :在一次 HTTP 请求中,一个 bean 定义对应一个实例。

session :在一个 HTTP session 中,一个 bean 定义对应一个实例。

global session :在一个全局的 HTTP session 中,一个 bean 定义对应一个实例。

 

depends-on 属性:指定依赖 bean

表示初始化 bean 之前强制一个或者多个 bean 被初始化。

 

lazy-int 属性:延迟初始化 bean

在默认的情况下, applicationContext 会在系统启动时实例化所有的 singleton bean ,但是可以通过lazy-init 将 bean 设置为延迟实例化。

 

init-method 属性:初始化回调

在实例化一个 bean 时,可能需要进行相关的初始化工作。使用 init-method 属性指定一个普通的初始化方法。

 

destroy-method 属性:析构回调

在 bean 被释放回收时,可以通过 destroy-method 属性来指定一个析构函数。

parent 属性:继承 bean

 

 

            配置 <bean> 的子元素

  通过 <property> 实现

 

1 . 直接使用 value 属性来表示

 

Xml代码  
  1. 1. 直接使用value属性来表示   
  2. <property name="message" value="ddd" />  
  3. 2. 使用<value>子元素来表示   
  4.             <property name="message">  
  5.                 <value>World</value>  
  6.     </property>  
  7. 3. 使用<ref>子元素指向另一个bean,这种方式将会在部署时验证所被引用的bean是否存在。而第二种在实际实例化时才会被发现。  
  8.             <property name="problem" ref="Problem" />  
  9.         或者:<property name="problem" />  
  10.                 <ref name="Problem"/>  
  11.             </property>  
  12.         4. 如果被引用的bean在同一个xml文件中,且bean名字就是bean id,那么可以使用local属性,此属性允许xml解析器在解析xml文件时来对引用的bean进行验证。  
  13. <property name="problem" />  
  14.                 <ref local="Problem"/>  
  15.             </property>  
  16.         5. 集合元素<list>,<set>,<map>,<props>的应用  
  17.     <bean id="CollectionTest" class="" >  
  18.         <property name="propertiesInfo">  
  19.             <props>  
  20.                 <prop key="key1">key1</prop>  
  21.                 <prop key="key2">key2</prop>  
  22.             </props>  
  23.         </property>  
  24.         <property name="listInfo">  
  25.             <list>  
  26.                 <value>list1</value>  
  27.                 <value>list2</value>  
  28.             </list>  
  29.         </property>  
  30.         <property name="mapInfo">  
  31.             <map>  
  32.                 <entry key=” map1”>  
  33.                     <value>map1 info</value>  
  34.                 </entry>  
  35.                 <entry>  
  36.                     <key>  
  37.                         <value>map2</value>  
  38.                     </key>  
  39.                     <value>map2 info</value>  
  40.                 </entry>  
  41.             </map>  
  42.         </property>  
  43.         <property name="setInfo">  
  44.             <set>  
  45.                 <value>set1</value>  
  46.                 <value>set1</value>  
  47.             </set>  
  48.         </property>  
  49.     </bean>  
  50.         6. <bean>继承  
  51. <bean>继承父<bean>的配置信息。如果子<bean>提供了父<bean>的配置信息,子<bean>的配置信息将覆盖父<bean>的配置信息。父<bean>一般声明为 abstract=”true”,表示这个<bean>不实例化为一个对应的bean。  
  52. <bean id="abstractDao" abstract="true">  
  53.         <property name="sqlMapClient" ref="sqlMapClient" />  
  54.     </bean>  
  55. <bean id="userDao" parent="abstractDao" class="com.demo.spring.dao.user.impl.UserDaoImpl" />  

 

Resource

Resource template = ctx.getResource("some/resource/path/myTemplate.txt");

or

Resource template = ctx.getResource("classpath:some/resource/path/myTemplate.txt");


ClassPathXmlApplicationContext

ApplicationContext ctx = new ClassPathXmlApplicationContext("conf/appContext.xml");

FileSystemXmlApplicationContext

ApplicationContext ctx = new FileSystemXmlApplicationContext("conf/appContext.xml");


你可能感兴趣的:(spring,xml,bean,session,prototype,IOC)