您的位置:首页 > 编程语言 > Java开发

spring容器和装配Bean:

2015-11-30 23:53 302 查看

spring容器和装配Bean:

1、容器是spring的核心,使IoC管理所有和组件

2、spring的两种容器:a、BeanFactoy

b、ApplicationContext应用上下文

3、BeanFactory:BeanhFactory使用延迟加载所有的Bean,为了从BeanhFactory得到一个Bean,只要调用

getBean()方法,就能获得Bean

4、ApplicationContext:a、提供文本信息解析,支持I18N

b、提供载入文件资源的通用方法

c、向注册为监听器的Bean发送事件

d、ApplicationContext接口扩展BeanFactory接口

e、ApplicationContext提供附加功能

5、ApplicationContext的三个实现类:a、ClassPathXmlApplication:把上下文文件当成类路径资源

b、FileSystemXmlApplication:从文件系统中的XML文件载入上

下文定义信息

c、XmlWebApplicationContext:从Web系统中的XML文件载入上下

文定义信息

6、在默认情况下,Bean全都是单态,在<bean>中的singleton为false

7、<bean>中的id属性必须遵循Java规范,而name属性可以不遵循

8、Bean的实例化的时候需要一些初始化的动作,同样当不再使用的时候,需要从容器中将其销毁

9、对象的初始化:<bean init-method="方法名">

10、对象的销毁:<bean destroy-method="方法名">

销毁对象的过程:a、主线程先被中断

b、Java虚拟机使用垃圾回收机制回收Bean对象

11、Bean设置:设值注入:1)简单配置:<bean id="xxx" class="Bean的全称类名">

<property name="xx"
value="xxxxx"></property>

</bean>

value中的值可以是基本数据类型或者String类型,spring将会

自动判断设置的类型并且

将其转换成合适的值

2)引用配置:<bean id="xxx" class="Bean的全称类名">

<property name="xx"
ref="xxxxx"></property>

</bean>

ref中的值是引用数据类型,spring容器会完成获取工作

3)List和数组:<bean id="xxx" class="Bean的全称类名">

<property
name="list">

<list>

<value></value>

<ref bean=""/>

</list>

</property>

</bean>

list元素内可以是任何元素,但不能违背Bean所需要的对象类



4)Set配置:和<list>一样,将<list>改成<set>

5)Map配置:Map中的每条数据是由一个键和一个值组成,用<entry>元素来定



<bean id="xxx" class="Bean的全称类名">

<property
name="list">

<entry key="key1">

<value></value>

</entry>

</property>

</bean>

<bean id="xxx" class="Bean的全称类名">

<property
name="list">

<entry key="key1">

<ref bean=""/>

</entry>

</property>

</bean>

注意:配置entry时,属性key的值只能是String,因为Map通常用

String作为主键

6)Properties配置:使用<props>和<map>相似,最大区别是<prop>的值都是

String

注意:使用设值注入必须要有set方法,通过name属性找set方法

优势:a、通过set()方法设定更直观,更自然

b、当依赖关系较复杂时,使用set()方法更清晰

构造子注入:必须要有无参和带参的构造方法,加上index(值从0开始)属性避免注入混



<constractor-arg>

注意:设值注入可以和构造子注入混合使用。先调用构造方法产生对象,再调用set()方法

赋值。但只使用设值注入时,会先调用无参的构造方法

优势:a、依赖关系一次性设定,对外不准修改

b、无需关心方式

c、注入有先后顺序,防止注入失败
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: