轻量级Java_EE企业应用实战-深入理解容器中的Bean

spring框架绝大部分工作都集中在对容器Bean的管理上,包括管理容器中Bean的生命周期,使用Bean继承等特殊功能。通过这些深入的管理,应用程序可以更好迪使用这些Java组件(容器中的Bean对应用而言,往往是一个组件)

1.1使用抽象Bean

<bean id="chineseTemplate" class="org.crazyit.app.service.impl.Chinese"
    abstract="true">
    <!-- 定义依赖注入的属性-->
    <property name="axe" ref="steelAxe"/>
</bean>

抽象Bean因为无需实例化,所以也可以将class属性去掉 

 

 1.2使用子Bean

<bean id="chineseTemplate" class="org.crazyit.app.service.impl.Chinese"
    abstract="true">
    <!-- 定义依赖注入的属性-->
    <property name="axe" ref="steelAxe"/>
</bean>
<!-- 通过parent属性定义子bean -->
<bean id="chinese" parent="chineseTemplate"/>

 

1.3 Bean继承与java继承的区别

Java中的继承是实例与实例之间的参数的延续,是对象与对象之间的关系。Spring则是一般到特殊的细化,是类与类之间的关系

 

1.4容器中的工厂Bean

 

 标准工厂,该工厂Bean实现了FactoryBean接口

package com.jtwl.office.factory;

import org.springframework.beans.factory.FactoryBean;

import com.jtwl.office.service.Person;
import com.jtwl.office.service.Person1;
import com.jtwl.office.service.imp.Chinese1;

/**
 * @todo
 * @author 成明俊
 * @email 1047914020@qq.com
 * @date 2020年3月2日
 */
public class PersonFactory1 implements FactoryBean<Person1>{
	Person1 p = null;

	//返回工厂Bean所生产的产品
	public Person1 getObject() throws Exception {
		if(p == null) {
			p = new Chinese1();
		}
		return p;
	}

	//获取工厂Bean所生产的产品的类型
	public Class<? extends Person1> getObjectType() {
		return Chinese1.class;
	}

	//返回该工厂Bean所生成的产品是否为单例
	public boolean isSingleton() {
		return false;
	}

}

 配置文件

  <!-- 配置一个FactoryBean,与配置普通Bean完全一样 -->
<bean id="chinese" class="com.jtwl.office.factory.PersonFactory1"/>  

主程序

public class SpringTest {
	public static void main(String[] args) {
		ApplicationContext ctx = new ClassPathXmlApplicationContext("bean.xml");		
		//直接请求Factory时,系统将返回FactoryBean的产品
		Person1 p1 = ctx.getBean("chinese", Person1.class);
		System.out.println(p1.sayHello("Mary"));
		//再次获取该FactoryBean的产品
		Person1 p2 = ctx.getBean("chinese", Person1.class);
		System.out.println(p1 == p2);
		//如需获取FactoryBean本身,则应该在Bean id前增加&
		System.out.println(ctx.getBean("&chinese"));
	}

}

运行结果

 

1.5 获得Bean本身的id

 

1.6 强制初始化bean 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值