??xml version="1.0" encoding="utf-8" standalone="yes"?>
java是一门面向对象的语言,在代码里,_略的讲一个对象的体现是一个类(class)的实?也可以说是一个JavaBean.在一个实际工E中,像这L对象或实例会存在很多,q且每个对象的状?作用范围,以及它们之间的关p?在Spring中ؓ依赖)是很复杂?所以要理它们也是很大的开销.而在spring?对与它们的管理就是容器管?你可以看作容器就是这些bean的集? 理的方面主要有bean的创?周期(作用?和初始属?注入),以及bean之间怺依赖的关pȝ.用比较专业的话就?-----理对象对其q行实例化、配|以及组?
Spring IoC 容器
?. 容器的运?
在Spring包的有两个很重要的东?org.springframework.beans?tt class="literal">org.springframework.context?q两个包是IOC的基?自然也是q行IOC容器的关?而其中关键的关键是分别在两个包里的BeanFactory?font face="Courier New">ApplicationContext,其中BeanFactory提供了配制框架及基本功能, ?/font>
ApplicationContext则是它的扩展,q个扩展是针对企业别的,当中加入很多了企业的支?功能得到了进一步增强,比如更易与Spring AOP集成、消息资源处?国际化处?、事件传递及各种不同应用层的context实现(如针对web应用的WebApplicartionContext).
1 . 实例化容?
在项目工E中用于实例化容器的cM般都是ApplicationContext以及他的扩展WebApplicationContext,当然BeanFactory也能?
在代码中一般是:
//1.
Resource resource = new FileSystemResource("beans.xml");BeanFactory factory = new XmlBeanFactory(resource);
//2.
ClassPathResource resource = new ClassPathResource("beans.xml");
BeanFactory factory = new XmlBeanFactory(resource);
//3.
ApplicationContext context = new ClassPathXmlApplicationContext(
new String[]{"applicationContext.xml", "applicationContext-part2.xml"});
// of course, an ApplicationContext is just a BeanFactory
BeanFactory factory = (BeanFactory) context;
//4.ApplicationContext context = new FileSystemXmlApplicationContext("src\\beans.xml");
实际的项目中,上述的实例化Ҏ一般都是用于非Web工程(c/s)或者测试代码中而在web工程内一般用的是ApplicationContext,实例化它只是在web配置文g(web.xml)里写入配|信?
2. 容器的?
一般这是在代码U创ZIOC容器?是上述?1)),或者是获得了容器的"引用"后用(q里其实是beanFactory和ApplicationContext的实现类的引??);
上面六点,都是在BeanFactory中的基本和一些简单的用法,但在其扩展后了的ApplicationContext中加入了企业U的功能,比如国际?资源讉K{?q些我将在学习Spring
XML格式的元数据配置中学?
三?. 配置元数?br /> 我自q理解: 配置元数据的作用是Spring理Bean对象关系和资源文件的"规章制度",它是告诉IOC容器如何ȝl对象和对象之间的关pL怎样?
目前,Spring支持三种配置元数据格式:XML格式、Java属性文件格式或使用Spring公共API~程实现。很昄,XML是现在最方便和容易编写的配置元数?
在Spring的XMl配置元数据格式ؓ:
到此,理解了什么是Spring,以及它在工程中的基本框架,下面着重学习的是它的依赖注入和AOP技术的q用,学习是如何在XML元数据中q行配置.
q是一个Spring所能涉及WEB一个应用的完整l构,它几乎完整覆盖了一般WEB工程的所需.对于在Sring中到底有些什么模?它们所L作用和具体有实现了什么技?下面q幅囑ְ很清楚的说明了一?
Core 装包是框架的最基础部分Q提供IoC和依赖注入特性。这里的基础概念是BeanFactoryQ它提供对Factory模式的经典实现来消除对程序性单例模式的需要,q真正地允许你从E序逻辑中分d依赖关系和配|?
构徏于Core 装包基上的 Context装包,提供了一U框架式的对象访问方法,有些象JNDI注册器。Context装包的Ҏ得自于Beans装包,q添加了对国际化QI18NQ的支持Q例如资源绑定)Q事件传播,资源装蝲的方式和Context的透明创徏Q比如说通过Servlet容器?
DAO提供了JDBC的抽象层Q它可消除冗长的JDBC~码和解析数据库厂商Ҏ的错误代码?q且QJDBC 装包还提供了一U比~程性更好的声明性事务管理方法,不仅仅是实现了特定接口,而且?span class="emphasis">所有的POJOsQplain old Java objectsQ?/span>都适用?
ORM装包提供了常用的“对?关系”映APIs的集成层?其中包括JPA、JDO、Hibernate ?iBatis 。利用ORM装包,可以混合使用所有Spring提供的特性进行“对?关系”映,如前Ҏ到的单声明性事务管理?
Spring?AOP 装包提供了W合 AOP Alliance规范的面向方面的~程Qaspect-oriented programmingQ实玎ͼ让你可以定义Q例如方法拦截器Qmethod-interceptorsQ和切点QpointcutsQ,从逻辑上讲Q从而减׃码的功能耦合Q清晰的被分d。而且Q利用source-level的元数据功能Q还可以各U行Z息合q到你的代码中,q有点象.Net的attribute的概c?
Spring中的 Web 包提供了基础的针对Web开发的集成Ҏ,例如多方文g上传Q利用Servlet listenersq行IoC容器初始化和针对Web的application context。当与WebWork或Struts一起用SpringӞq个包Spring可与其他框架l合?
Spring中的 MVC装包提供了Web应用的Model-View-ControllerQMVCQ实现。Spring的MVC框架q不是仅仅提供一U传l的实现Q它提供了一U?清晰?/span> 分离模型Q在领域模型代码和web form之间。ƈ且,q可以借助Spring框架的其他特性?
上面的文字是来自官方文档的翻?个h认ؓq是最好的概括?最后对于Spring的用场景和详细的特性就不详l的写出?我认为最主要的是l合目的实际来学习不过q运的是现在在项目的间隙有一定的旉d?接下来我从Spring的IOC和容器管理开始我的学?
? 本h首次写有x术上的bolg,有上面错误和不望大家多多批评和更正.在次先表C?]