Spring 核心框架之Bean配置

在上一篇博文里我已经简单介绍了一些Beans 的基本配置。现在介绍Bean 的更为详细的相关内容。
Bean 的作用范围(Scope
Spring 中,Bean 5 种作用范围,分别是:
-singleton ,即单例模式,在整个环境中仅存在一个Bean 的实例对象。
-prototype ,可以无限次实例化,从某种程度上说,相当于java new 运算符。
-request ,每个Http Request 均拥有一个Bean 的实例。
-session ,每个会话均拥有一个Bean 的实例。
-global session ,全局session 。类似于session ,但是仅仅只能在基于Portlet Web 应用程序中使用。
 
Spring 中,Bean 默认Scope Singleton ,若要手动指定Scope ,则应在配置文件中插入下面的代码:
< bean id ="accountService" class ="com.foo.DefaultAccountService" scope ="xxx" />
其中,scope 属性取值可为上面的5 个值中的任意一个。
需要注意的是,若要使用request session 或者global session ,则必须使用可以支持web ApplicationContext 的实现,比如XmlWebApplicationContext ,否则会出现IllegalStateException 异常。在web 程序里面,特别是要与Struts 框架相集成的情况下,应在web.xml 里面加入下面所示的监听类(要求Servlet 版本在2.4 以上,其余的版本请查阅相关文档)。
< web-app >
...
< listener >
   < listener-class >
    org.springframework.web.context.request.RequestContextListener
   </ listener-class >
</ listener >
...
</ web-app >
 
自定义Bean 的特性
对于Bean ,可以为其自定义初始化的回调方法和销毁回调方法。
方法很容易,只需在配置文件中加入下面所示的代码:
< bean id ="exampleInitBean" class ="examples.ExampleBean" init-method ="init" />
然后在 Bean 中定义如下的方法:
public class ExampleBean {
   public void init() {
   // do some initialization work
  }
}
对于销毁回调方法,也是一样的,在配置文件中定义
< bean id ="exampleInitBean" class ="examples.ExampleBean" destroy-method ="cleanup" />
然后在Bean 中定义一个cleanup() 方法即可。其实还有一种方法,即Bean 实现InitializingBean DisposableBean 接口,也可以达到这种目的。但是如果这么做会与Spring 发生耦合,不利于代码的可维护性。
有的时候可能存在许多Bean ,这些Bean 都需要调用初始化方法,要是在配置文件中逐个修改,是很费时间的事情,我们可以采用默认初始化方法。主要做如下配置:
< beans default-init-method ="init" >
   < bean id ="blogService" class ="com.foo.DefaultBlogService" >
     < property name ="blogDao" ref ="blogDao" />
   </ bean >
</ beans >    
这段配置假设初始化方法均命名为init() ,一旦创建这个Bean ,则会调用所有与之存在依赖关系的Bean init()


你可能感兴趣的:(spring,bean,配置,职场,休闲)