1、spring配置文件的根元素是來源spring bean命名空間所定義的<beans>元素:
<?xml version="1.0" encoding="UTF-8" ?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsd"></beans>
2、構造器注入
<bean id="fighter" class="com.cn.bean.Fighter"> <constructor-arg value="15" /> <constructor-arg ref="figterBlock" /></bean>
3、單例類創建:
package spring.study.spring.bean;public class FighterSingle { private FighterSingle(){ System.out.println("create FighterSingleHolder"); } private static class FighterSingleHolder{ static FighterSingle instance = new FighterSingle(); } public static FighterSingle getInstance(){ return FighterSingleHolder.instance; } public void say(){ System.out.println("I'm a FighterSingleHolder"); }}在spring上下文配置:
<bean id="fighterSingle" class="spring.study.spring.bean.FighterSingle" factory-method="getInstance"/>
但是即使不聲明后面的factory-method也是可以正常創建的,這是為什么?
4、Bean的作用域:
<bean id="fighterBlock" class="spring.study.spring.bean.FighterBlock" scope="prototype"/>
singleton:在每一個spring容器中,一個Bean定義只有一個對象實例(默認)
prototype:允許Bean的定義可以被實例化任意次(每次調用都創建一個實例)
request:在一次HTTP請求中,每個Bean定義對應一個實例,該作用域僅在基于web的spring上下文中才有效
session:在一個HTTP session中,每個Bean定義對應一個實例。該作用域僅在基于web的spring上下文中才有效
global-session:在一個全局HTTP session中,每個Bean定義對應一個實例。該作用域僅在Porlet上下文中才有效
5、初始化和銷毀Bean
<bean id="fighterBlock" class="spring.study.spring.bean.FighterBlock" init-method="init" destroy-method="destroy"/>
或者可以在<beans ....default-init-method="init"default-destroy-method="destroy">
或者讓Bean實現spring的InitializingBean和DisposableBean接口
6、注入Bean屬性:
<bean id="student" class="spring.study.spring.bean.Student" > <property name="name" value="kangkang" /> <property name="monitor" ref="monitor" /> </bean> <bean id="monitor" class="spring.study.spring.bean.Monitor"> <property name="name" value="Mrs wang" /> <property name="age" value="35" /> </bean>
內部Bean:
<bean id="student2" class="spring.study.spring.bean.Student" > <property name="name" value="kangkang" /> <property name="monitor"> <bean class="spring.study.spring.bean.Monitor" /> </property></bean>
新聞熱點
疑難解答