Spring 三种实例化bean的方式

Spring的三种实例化Bean的方式
  1,xml配置使用bean的类构造器
  2,xml配置+factory类,使用静态工厂方法实例化
  3,xml配置+factory类,使用实例工厂方法实例化
   以下分别说明
  1,xml配置使用bean的类构造器
  请参照前一篇文章《第一个Spring程序,HELLOWORLD》。
  2,xml配置+factory类,使用静态工厂方法实例化
  请参照以下代码中蓝字的部分,红字的部分为第三种方法所用。
  xml文件配置
  xml文件名:beans.xml
  文件内容:
  
   <?xml version="1.0" encoding="UTF-8"?>
  <beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.springframework.org/schema/beans
  http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
  <!-- the application context definition for the springapp DispatcherServlet -->
  <bean id="sayhello" class="test.service.impl.HelloBean"/>
  <bean id="sayhello2" class="test.service.impl.HelloBeanFactory" factory-method="createHelloBean"/>
  <bean id="factory" class="test.service.impl.HelloBeanInstanceFactory"/>
  <bean id="sayhello3" factory-bean="factory" factory-method="createHelloBean"/>
  </beans>

  工厂java文件
  文件名:HelloBeanFactory.java
  文件内容:
  
   package test.service.impl;
  import test.service.Hello;
  public class HelloBeanFactory {
  public static Hello createHelloBean() {
  return new HelloBean();
  }
  }

  bean接口文件
  文件名:Hello.java
  文件内容:
  package test.service;
  public interface Hello {
  public void sayHello();
  public void sayHello2();
  public void sayHello3();
  }

  bean实现文件
  文件名:HelloBean.java
  文件内容:
  package test.service.impl;
  import test.service.Hello;
  public class HelloBean implements Hello {
  public void sayHello() {
  System.out.println("这是一个测试程序");
  }
  @Override
  public void sayHello2() {
  System.out.println("这是一个测试程序,测试静态工厂创建bean");
  }
  @Override
  public void sayHello3() {
  System.out.println("这是一个测试程序,测试实例工厂创建bean");
  }
  }

  3,xml配置+factory类,使用实例工厂方法实例化
  xml文件配置
  xml文件名:beans.xml
  文件内容:参照方法2中的红字部分
  工厂java文件
  文件名:HelloBeanInstanceFactory.java
  文件内容:
  package test.service.impl;
  import test.service.Hello;
  public class HelloBeanInstanceFactory {
  public Hello createHelloBean() {
  return new HelloBean();
  }
  }


  bean接口文件
  文件名:Hello.java
  文件内容:参照方法2中的红字部分
  bean实现文件
  文件名:HelloBean.java
  文件内容:参照方法2中的红字部分
  好,最后测试文件
  文件名:FirstSpring.java
  文件内容:

  package test.spring;
  import org.springframework.context.ApplicationContext;
  import org.springframework.context.support.ClassPathXmlApplicationContext;
  import test.service.Hello;
  public class FirstSpring {
  public static void main(String[] args) {
  testHello();
  testHelloForStaticFactory();
  testHelloForInstanceFactory();
  }
  public static void testHello() {
  ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml");
  Hello hello =(Hello) applicationContext.getBean("sayhello");
  hello.sayHello();
  }
  public static void testHelloForStaticFactory() {
  ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml");
  Hello hello =(Hello) applicationContext.getBean("sayhello2");
  hello.sayHello2();
  }
  public static void testHelloForInstanceFactory() {
  ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml");
  Hello hello =(Hello) applicationContext.getBean("sayhello3");
  hello.sayHello3();
  }
  } 

  都写完了,来执行一下,结果输出:
  这是一个测试程序
  这是一个测试程序,测试静态工厂创建bean
  这是一个测试程序,测试实例工厂创建bean
  总结一下:
  三种方法的用处:
  第一种方法,通过bean的缺省构造函数创建,当各个bean的业务逻辑相互比较独立的时候或者和外界关联较少的时候可以使用。
  第二种方法,利用静态factory方法创建,可以统一管理各个bean的创建,如各个bean在创建之前需要相同的初始化处理,则可用这个factory方法险进行统一的处理等等。
  第三种方法,利用实例化factory方法创建,即将factory方法也作为了业务bean来控制,觉得1可用于集成其他框架的bean创建管理方法,2能够使bean和factory的角色互换。

================================================================

http://www.233.com/java/zhuangye/20090721/100335633.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值