Spring入门到精通(二)

来源:互联网 发布:nginx m3u8 点播 编辑:程序博客网 时间:2024/06/08 02:51

Spring的核心容器

1.什么是bean

bean是描述java的软件组件模型,有点类似于Microsoft的COM组件的概念,在java模型中,通过Bean可以无限扩充java程序的功能,通过bean的组合可以快速的生成新的对应的程序,对于开发人员来说,最重要的是Bean可以实现代码的重复利用

2、bean的基础知识

在Spring中,有两个最基本的,最重要的包,即org.springframework.beans和org.springframework.context

最重要的两个类 BeanFactory 和ApplicationContext

BeanFactory提供了一种先进的配置机制来管理任何种类的 Bean

ApplicationContext 建立在BeanFactory之上,并增加了其他的功能

config.xml代码示例

<bean id="Hello" class="com.dtl.Hello">
——-<value>Hello</value>
</bean>

在Spring中可以用id或者name属性来指定Bean的id,并且在这两个或其中一个属性中至少有一个id,id和name的区别是:
ID属性允许指定一个Bean的id,并且它在XML DTD中作为一个正真的XML元素ID属性被标记。所以XML解析齐就能够在其他元素指向他的时候做一些额外的校验,但是在XML规范严格限定了在XML ID中合法的字符,如果在开发中有必要使用一些非法的字符,即不符合ID规定的字符,或者要给bean增加其他别名,则可以通过name属性指定一个或多个id,当多个id是要用逗号(,)或者分号(;)分隔。

注意

一个bean一般只有一个id;如果一个bean有超过一个id,那么另外的那些id可以认为是这个bean的别名

bean的calss

calss属性指明了Bean的来源,即bean的实际路径

注意

class 属性路径的完整性,例如,要写calss=”com.dtl.action.HelloWorld”,而不能写class=“HelloWorld”

Sigleton的使用

Bean可以被定义为两种部署模式中的一种:singleton 或者 non-sigleton(prototype)。Spring默认为singleton模式
**如果一个bean被定义为singleton模式。那么就只有一个共享的实例存在,所有对这个Bean的请求都会返回这个唯一的实例
**如果一个Bean被定义为non-singleton(prototype)模式。那么对这个Bean的每次请求都会创建一个新的Bean实例,读者可以把它当成类似new的操作

注意

Spring配置文档中所有的bean都默认为singleton,客户段每次向BeanFactory请求时,只返回一个实例,如果要客户段每次向BeanFactory请求时都创建新的实例,则要把 singleton=”true”改为”false”

Bean的属性

在Spring中,Bean的属性值有两种注入方式,基于setter的依赖注入和基于构造函数的依赖注入,基于setter的依赖注入,是在调用无参的构造函数或者无参的静态工厂方法实例化配置文档中定义的Bean之后,通过调用Bean上的Setter方法实现的,基于构造函数的依赖注入,是通过调用带有许多参数的构造方法实现的,每个参数表示一个对象或者属性

Bean的生命周期

Bean的定义, Bean的初始化,Bean的使用,Bean的销毁 四个阶段

Bean的初始化方式

1、在配置文档中通过指定init-method属性来完成
2、实现org.springframework.beans.factory.InitializingBean接口(如果一个bean实现了org.springframework.beans.factory.InitializingBean接口,则它的所有必需的属性被BeanFactory设置后,会自动执行它的afterPropertiesSet()方法)

Bean的使用方式

第一种、使用BeanWrapper。示例代码如下:
HelloWorld helloWorld = new HelloWorld();
BeanWrapper bw = new BeanWrapperImpl(helloWorld);
bw.setPropertyValue("msg","HelloWorld");
System.out.println(bw.getPropertyValue("msg"));

第二种、使用BeanFactory。实例代码如下:
InputStream is = new FileInputStream("config.xml");
XmlBeanFactory factory = new XmlBeanFactory(is);
HelloWorld helloWrld =(HelloWorld)factory.getBean("HelloWorld")

原创粉丝点击