Spring实例化Bean的三种方式

Spring实例化Bean的三种方式分别是:
1,xml配置使用bean的类构造器
2,xml配置+factory类,使用静态工厂方法实例化
3,xml配置+factory类,使用实例工厂方法实例化

以下分别说明

1,xml配置使用bean的类构造器

2,xml配置+factory类,使用静态工厂方法实例化

Spring实例化Bean的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文件名:beans.xml
文件内容:参照方法2中的红字部分
工厂Java文件
文件名:HelloBeanInstanceFactory.java

package test.service.impl;   
import test.service.Hello;   
public class HelloBeanInstanceFactory {   
	public Hello createHelloBean() {   
		return new HelloBean();   
	}   
} 

文件名:Hello.java
文件内容:参照方法2中的红字部分
Bean实现文件
文件名:HelloBean.java
文件内容:参照方法2中的红字部分
Spring实例化Bean完成,最后测试文件

文件名: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();   
	}   
} 


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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值