文章基于 林炳文Evankaka原创作品。(内容略有删减,加入自己理解,加背景色部分)
摘要:spring的核心容器实现了Ioc,其目 的是提供一种无侵入式的框架。在本文中,首先讲解了Spring的基础bean的相关知识,然后介绍了Spring是如何对bean进行管理的。
在Spring中,有2个最基本最重要的包,即org.springframework.beans 和org.springframework.context.在这两个包中实现了无侵入式的框架,代码中大量引用了Java的反射机制,通过动态调用的方式避免了硬编码,为spring的反向控制特性提供了基础。在这2个包中,最重要的类是BeanFactory和ApplicationContext。
- BeanFactory提供了一种先进的配置机制来管理任何种类的bean。是Spring框架的基础设施面上的功能,是最本质的Spring的基础。
- ApplicationContext建立在BeanFactory之上,并增加了其他功能,如国际化,获取资源,事件传递等。面向的是使用Spring框架的开发者,计划所有的场合都适用。
- 因此在大多数场合都采用ApplicationContext方法。
一、Bean的基础知识
1.在xml配置文件中,bean的标识(id 和 name)
id:指定在benafactory中管理该bean的唯一的标识。name可用来唯一标识bean 或给bean起别名。
- <bean id="helloWorld" class="com.name.HelloWorld">
- ........
- <span style="color:#000000;"> </bean></span>
class属性指定了bean的来源,即bean的实际路径。注意要指定全路径,而不可只写类名。
3.Bean的作用域
在spring中,bean共有五种作用域:分别是singleton、prototype、request、session、global和global Session。在以上五种作用域中,singleton和prototype是最常用的。
singloeton:只有一个共享的实例存在,所有对这个bean的请求都会返回这个唯一实例。
prototype:对这个bean的每次请求都会都会创建一个新的bean实例。根据已经存在的bean而clone出来的bean。默认为singleton模式。
改写成prototype模式写法如下:
- <bean id="student3" class="com.mucfc.beanfactory.Student" scope="prototype">
- .......
- </bean>
spring中,bean的属性值有2种注入方式。setter注入和构造函数注入。(此处注意,Ioc中bean的注入方式有三种与这个相区别,分别是Setter方法注入,构造器注入以及接口注入)
setter注入是在调用无参的构造函数或无参的静态工厂方法实例化配置文档中定义的bean之后,通过调用bean上的setter方法实现的。
构造函数的依赖注入是通过调用带有很多参数的构造方法实现的,每个参数表示一个对象或者属性。
这里不懂看此文
5.对属性null值的处理
- <bean id="student5" class="com.mucfc.beanfactory.Student">
- <property name="std_name">
- <value></value>
- </property>
- <property name="std_id">
- <value>2005</value>
- </property>
- </bean>
<bean id="student5" class="com.mucfc.beanfactory.Student">
<property name="std_name">
<value></value>
</property>
<property name="std_id">
<value>2005</value>
</property>
</bean>
或者