Spring的 Bean 封装机制

Spring从核心而言就是一个DI(依赖注入)容器,其核心的核心就是Bean的封装机制:BeanWrapper(Bean的封装包)和Bean Factory(Bean工厂)
1.[color=brown]Bean Wrapper[/color]
Bean Wrapper及Bean Factory的底层是通过java.lang.reflect机制来实现的
Class cla = Class.forName("com.tianye.Student");
Object obj = (Object)cla.newInstance();
Method method = cla.getMethod("setName",new Class[]{String.class});
method.invoke(obj,new Object[]{"TianYe"});

利用Bean Wrapper来操作一个Bean实例:
public static void TestBeanWrapper(){

try{
Object obj = Class.forName("com.tianye.Student").newInstance();
BeanWrapper bw = new BeanWrapperImpl(obj);
bw.setPropertyValue("name","TianYe");
System.out.println(bw.getPropertyValue("name"));
}catch(Exception e){
e.printStackTrace();
}
}
BeanWrapper 需要逐个的对属性设置值,操作起来比较繁琐,而且只是针对单个Bean进行的操作,BeanWrapper不是很常用,在此基础上出现了BeanFactory
2.[color=brown]BeanFactory[/color]
BeanFactory对Bean的操作是通过配置文件来完成的,BeanFactory在配置文件中可以配置的项目:
(1) Bean属性值及依赖关系
(2) Bean的创建模式(是否为singleton)
(3) Bean的初始化及销毁方法
(4) Bean的依赖关系
[color=blue] <bean>[/color]标签中的属性及用法
[color=red]id[/color]: 是Bean在BeanFactory中的一个唯一的标识,在代码中以此作为索引名称来获取Bean实例的
[color=red]class[/color]:类名(类的路径---包名.类名)
[color=red]singleton[/color]: singleton="false"的时候表示该类不是单例Bean是多利Bean,多线程访问的时候,会获取到多个不同的Bean实例 singleton="true"的时候表示该类是单例Bean,多线程访问的时候只可以获取到一个Bean实例
[color=red]lazy-init[/color]:为"true"的时候表示在spring容器启动的时候不用加载该Bean,只要第一次获取Bean实例的时候才加载该Bean, 为"false"的时候则是在spring容器启动的时候就被加载,利用该属性可以优化spring容器的启动速度
该属性只针对于单例Bean起作用,当singleton="false"的时候系统抛出异常
init-method:初始化方法,在BeanFactory创建Bean实例后执行该方法
destroy-method:销毁方法,在Bean销毁的时候调用,一般用于资源释放

[color=blue]<property>[/color]标签中的属性及用法
<value>节点:用于指定一个属性的值,BeanFactory会自动进行类型匹配
<ref>节点:指定了属性对BeanFactory中其他Bean的引用关系(即一个Bean中的属性或方法中的参数是另一个Bean的对象或是Interface对象),由接口的实现类来完成注入
<null>节点:当Bean中的属性值要设为 null 的时候,就需要使用到<null/>子节点
利用BeanFactory来获取Bean实例:
InputStream is = new FilleInputStream("bean.xml");
XmlBeanFactory xbf = new XmlBeanFactory(is);
IHello ihello = (IHello)xbf.getBean("hello");
BeanFactory实现了对多个Bean的管理
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值