spring概述

spring为企业提供了一个轻量级的解决方案,spring的形成思想,替换和很多繁琐的基于ejb的企业应用,spring的简单易用,一经推出,就引起了j2ee领域的极大兴趣,成为当前风头最盛的j2ee开源框架之一。
spring的核心机制以BeanFactory为基础,管理bean和bean之间的依赖。ApplicationContenxt容器是BeanFactory的子接口。spring以bean的方式组织,管理java应用的组件,组件之间的依赖关系松耦合运行良好都归功于得益于spring的核心机制:依赖注入。ApplicationContenxt是beanFacotry的加强,通常只有在对内存要求比较高的web应用中才使用BeanFactory对象。
spring实现了两种基本的设计模式:工厂模式和单态模式。这两种模式也是spring的设计思想,正是spring对这两种模式的实现,才将调用这从被调用者的实现逻辑中分离出来,调用者只关心被调用者必须满足的某种规则(接口),而不必关心实例的集体实现过程,具体的实现过程由bean工厂完成,同时,对所有相同id的bean的请求,都将返回同一个共享实例,大大降低java对象创建和销毁时的开销。
spring的bean和BeanFactory:
spring通过BeanFactory灵活地配置和管理bean。spring整个应用各层的对象,都以bean的形式进行管理,bean是spring工厂产生的实例,产生bean实例时,不需要关心实例化的过程和实现。实例化BeanFactory的方式:
//以指定路径下bean.xml配置文件为参数,创建文件输入流
InputStream is=new FileInputStream("bean.xml");
//以指定的文件输入流is,创建Resource对象
InputStreamResource isr=new InputStreamResource(is);
//以resource对象为参数,创建BeanFactory的实例
XmlBeanFactory factory=new XmlBeanFactory(isr);


ClassPathResource res=new ClassPathResource("bean.xml");
XmlBeanFactory factory=new XmlBeanFactory(res);
如果是多个属性配置文件,则可以采用BeanFactory的子接口ApplicationContext来创建BeanFactory的实例。通常使用如下两个实现类:
FIleSystemXmlApplicationContext:指定路径的xml配置文件创建ApplicationContext。
ClassPathXmlApplicationContenxt:以classpaht路径下的xml配置文件创建applicationCOntenxt对象。
bean的基本行为:单态和原形(non-singleton或prototype)。
使用depends-on强制初始化bean。
spring容器是创建bean的工厂,它是有能力跟踪bean的生命周期的。spring容器中主要存在两种bean:singleton bean和non-singleton bean。当两个singleton互相依赖或者singleson bean依赖non-singleton bean,通过配置文件就可以实现,但是如果non-singleton bean依赖singleton bean,由于singleton bean只有一次初始化,因此每次都是这个对象,这将导致non-singleton bean不能及时更新,出现了不同不现象,这时,可以采用1放弃依赖注入,主动请求容器的bean实例2利用方法注入。第一种方式破坏了代码的耦合性,违背了spring的设计思想。因此通常采用第二种方式,用lookup方法注入。lookup方法注入是指容器能够重写容器中bean的抽象或具体方法,返回容器中其他bean的结果。spring通过使用cglib库修改客户端的二进制码,实现上述要求。(lookup-method)。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值