控制Bean创建

下面介绍如何使用Bean范围化来控制Bean的创建工作

 

1:Bean范围化

      这一部分内容在先前的文章中已经说明了。不再累述~~

具体请看Spring中bean的作用域简介

 

 

2:利用工厂方法来创建Bean

    很多时候,在Spring应用上下文中配置Bean都可以通过调用类的构造函数来创建。但是如果想通过静态厂方法,使用第三方API来展现某些类型,该如何做?

考虑在Spring中配置单例类的情况。单例类只是确保通过静态厂方法只创建一个实例。

Java代码如下:Stage单例类

public class Stage{
 private Stage()
   {
   } 
 private static class StageSingLetonHolder{
   static Stage instance=new Stage();
  }

public static Stage getInstance()
  {
      return StageSingLetonHolder.instance;
  }
} 

 

Stage被作为单例类来实现,确保没有其他方法可以创建Stage的多个实例。注意:Stage没有一个公共的构造函数,静态的getInstance方法每次在调用时都返回相同的实例。在Spring中如何不使用构造函数来配置Stage为Bean呢?

     <bean>元素有一个factory-method属性,允许指定要使用的静态方法,而不是使用构造函数来创建类的实例。配置如下:

  <bean id="theStage"
         class="com.xx.xx.xxx.Stage"
         fatcory-method="getInstance"/>

 

 

 

3.初始化和销毁Bean

 

  要定义建立和销毁Bean,只需要使用init-method和destory-method参数来声明<bean>

 init-method属性指定了在Bean初始化时要调用的方法。

 destory-method属性指定了将Bean从容器中删除时要调用的方法。

配置如下:

 

   <bean id="a"
           class="xx.xxx.xxx.xx"
           init-method="方法名"
           destory-method=“方法名”>
    <prpperty name="" value=""/>
  </bean>

 

如果一个上下文定义文件中有多个Bean都使用相同的方法来初始化或销毁,则可以如下配置

  

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
	http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
	http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"
        default-init-method="方法名"
        default-destory-method="方法名"/>
..........
</beans>

 

 

InitializaingBean和DisposableBean

作为init-method和destory-method的备选,我们可以重写类来实现两个特定的Spring接口:InitializaingBean和DisposableBean。其中InitializaingBean接口需要实现afterPropertiesSet()方法,它用来执行Bean的初始化。DisposableBean接口需要实现destory()方法。这种方法的好处是无需额外的配置。缺点是使得Bean与Spring API相互耦合,所以不建议使用~~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值