Spring--IOC-实例化bean的四种方式

本文详细介绍了Spring框架中Bean的四种实例化方式:无参数构造器实例化、通过静态方法工厂创建、通过实体工厂创建及实现FactoryBean接口实例化。每种方式均有代码示例,帮助读者深入理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.构造器实例化(无参数构造器),最标准,使用最多

javaBean中必须有无参构造方法

	<!-- 1.使用无参数构造器(最多,最常见) -->
	<bean id="someBean1" class="cn.zj.spring.bean.SomeBean1"/>
	<!-- 
		底层原理
	Class<SomeBean1>  clz  = Class.forName("cn.zj.spring.bean.SomeBean1")
	SomeBean1 bean1 = clz.newInstance();
	 -->

二.通过静态方法工厂创建

 <!-- 2.通过静态方法工厂创建 -->
	 <bean id="someBean2" class="cn.zj.spring.bean.SomeBean2Factory" factory-method="getBean2"/>
/*
 * 
 * 静态工厂类
 * 
 * 提供一个 【静态】方法返回SomeBean2对象
 * 
 * 
 * 
 */
public class SomeBean2Factory {
	public static SomeBean2 getBean2() {
		SomeBean2 someBean2 = new SomeBean2();
		return someBean2;
	}
}

三.通过实体工厂创建

 <!-- 3.通过实体(对象)工厂方法创建 -->
	 <!-- 3.1创建工厂对象 -->
	 <bean id="someBean3Factory" class="cn.zj.spring.bean.SomeBean3Factory"/>
	 <!-- 3.2通过工厂对象创建SomeBean3
	 	factory-bean :工厂bean 
	 	 -->
	 <bean  id="someBean3" factory-bean="someBean3Factory" factory-method="getBean3"/>
/*
 * 对象工厂类
 * 
 * 提供一个 【对象】方法返回SomeBean3
 * 
 */
public class SomeBean3Factory{
	
	public SomeBean3 getBean3() {
		
		SomeBean3 bean3 = new SomeBean3();
		return bean3;
	}
}

四.实现FactoryBean接口实例化

 <!-- 4.实现Spring内置的FactoryBean接口 -->
	 <bean id="someBean4"  class="cn.zj.spring.bean.SomeBean4Factory"/>

/*
 * 
 *  实现 implements FactoryBean<T>
 *  T :泛型,就是当前要创建Bean对应的类型:SomeBean4
 *  
 *  实现接口的方法
 *  	getObject 返回T泛型对应的数据类型 
 * 		isSingleton 是否是单例设置
 *      getObjectType 返回bean数据类型
 *      
 * 所有的框架可Spring集成都是使用此种方式:Spring对外暴露的一个和Spring集成的接口
 * 	 Mybatis,Shiro,Hibernate,Struts2
 */

public class SomeBean4Factory implements FactoryBean<SomeBean4>{

	@Override
	public SomeBean4 getObject() throws Exception {
		System.out.println("------------------------");
		SomeBean4 bean4 = new SomeBean4();
		
		return bean4;
	}

	@Override
	public Class<?> getObjectType() {
		return null;
	}

	@Override
	public boolean isSingleton() {
		return true;
	}
	
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值