◆简介
意图:解决公司运用开发的复杂性
功用:运用根本的JavaBean替代EJB,并供给了更多的公司运用功用
规模:任何Java运用
Spring 结构是一个分层架构,由 7 个界说良好的模块构成号码归属地查询。Spring 模块构建在中心容器之上,中心容器界说了创建、装备和办理 bean 的办法。
构成 Spring 结构的每个模块(或组件)都能够独自存在关键词挖掘工具,或许与其他一个或多个模块联合完结。每个模块的功用如下:
• 中心容器:中心容器供给 Spring 结构的根本功用。中心容器的首要组件是 BeanFactory,它是工厂形式的完结。BeanFactory 运用操控回转 (IOC) 形式将运用程序的装备和依靠性标准与实际的运用程序代码分开。
• Spring 上下文:Spring 上下文是一个装备文件,向 Spring 结构供给上下文信息。Spring 上下文包含公司效劳,例如 JNDI、EJB、电子邮件、国际化、校验和调度功用。
• Spring AOP:经过装备办理特性,Spring AOP 模块直接将面向方面的编程功用集成到了 Spring 结构中。所以,能够很容易地使 Spring 结构办理的任何目标支撑 AOP。Spring AOP 模块为根据 Spring 的运用程序中的目标供给了业务办理效劳。经过运用 Spring AOP,不用依靠 EJB 组件,就能够将声明性业务办理集成到运用程序中。
• Spring DAO:JDBC DAO 笼统层供给了有意义的反常层次结构,可用该结构来办理反常处置和不一样数据库供货商抛出的错误音讯。反常层次结构简化了错误处置,而且极大地下降了需求编写的反常代码数量(例如翻开和关闭衔接)。Spring DAO 的面向 JDBC 的反常遵照通用的 DAO 反常层次结构。
• Spring ORM:Spring 结构插入了若干个 ORM 结构,然后供给了 ORM 的目标联系东西,其间包含 JDO、Hibernate 和 iBatis SQL Map。一切这些都遵照 Spring 的通用业务和 DAO 反常层次结构。
• Spring Web 模块:Web 上下文模块树立在运用程序上下文模块之上,为根据 Web 的运用程序供给了上下文。所以,Spring 结构支撑与 Jakarta Struts 的集成。Web 模块还简化了处置多有些恳求以及将恳求参数绑定到域目标的作业。
• Spring MVC 结构:MVC 结构是一个全功用的构建 Web 运用程序的 MVC 完结。经过战略接口,MVC 结构变变成高度可装备的,MVC 包容了许多视图技能,其间包含 JSP、Velocity、Tiles、iText 和 POI。
Spring 结构的功用能够用在任何 J2EE 效劳器中,大多数功用也适用于不受办理的环境。Spring 的中心要点是:支撑不绑定到特定 J2EE 效劳的可重用业务和数据访问目标。毫无疑问,这样的目标能够在不一样 J2EE 环境 (Web 或 EJB)、独立运用程序、测验环境之间重用。
◆Spring作为全方位的运用程序结构(Framework)
◆术语描绘
① 轻量级(Lightweight)。Spring中心包容量不到1MB的巨细,能够在许多小型设备中运用Spring。
② 非侵入性(No intrusive)。增强运用程序组件的可重用性,削减对结构的依靠。
③ 容器(Container)。根据装备文件自动生成目标及特点等,不用编写任何代码来产生目标。
④ Inversion of Control(IOC)与Dependency Injection(DI)。IOC意图就是依靠于笼统;目标之间的联系由容器根据装备文件将依靠写入指定的目标中。
⑤ AOP(Aspect-oriented programming)。根据署理及拦截器的机制,与Spring IOC 联系,选用运行时Weaving办法在Spring结构的运用程序中运用各种声明式体系级效劳。
⑥ 耐久层(Persistent)。Spring供给DAO、编程业务与声明式业务,关于ORM东西(Hibernate、iBATIS)的联系及运用上简化。
⑦ JavaEE效劳。能够运用JavaEE标准标准供给的各项效劳,并无缝联系。
◆Spring结构的优势
① 使J2EE易用和推进好编程习气。
Spring不重新开发已有的东西。因而,在Spring中你将发现没有日志记载的包,没有衔接池,没有散布业务调度。这些均有开源项目供给(例如Commons Logging 用来做一切的日志输出,或Commons DBCP用来作数据衔接池),或由你的运用程序效劳器供给。由于相同的的原因,咱们没有供给O/R mapping层,对此,已有好的解决办法如Hibernate和JPA。
② 使已存在的技能愈加易用。
例如,虽然咱们没有底层业务协调处置,但咱们供给了一个笼统层覆盖了JTA或任何其他的业务战略。
③ 没有直接和其他的开源项目竞赛。
例如,许多开发人员,咱们从来没有为Struts快乐过,而且感到在MVC结构中还有改善的地步。在某些范畴,例如轻量级的IoC容器和AOP结构,Spring有直接的竞赛,但是在这些范畴还没有现已较为盛行的解决方案。(Spring在这些区域是开路先锋。)
④ Spring在运用效劳器之间是可移植的。确保可移植性老是一项挑战,但是Spring防止任何特定渠道或非标准化,而且支撑在WebLogic,Tomcat,Resin,JBoss,WebSphere和其他的运用效劳器上的用户。
⑤ 便利解耦,简化开发。
经过Spring供给的IoC容器,咱们能够将目标之间的依靠联系交由Spring进行操控,防止硬编码所造成的过度程序耦合。有了Spring,用户不用再为单实例形式类、特点文件解析等这些很底层的需求编写代码,能够更专心于上层的运用。
⑥ AOP编程的支撑。
经过Spring供给的AOP功用,便利进行面向切面的编程,许多不容易用传统OOP完结的功用能够经过AOP轻松敷衍。
⑦ 声明式业务的支撑
在Spring中,咱们能够从单调愁闷的业务办理代码中解脱出来,经过声明式办法灵敏地进行业务的办理,提高开发效率和质量。
⑧ 便利程序的测验
能够用非容器依靠的编程办法进行简直一切的测验作业,在Spring里,测验不再是贵重的操作,而是顺手可做的工作。
⑨ 便利集成各种优异结构
Spring不排斥各种优异的开源结构,相反,Spring能够下降各种结构的运用难度,Spring供给了对各种优异结构(如Struts,Hibernate)等的直接支撑。
⑩ 下降Java EE API的运用难度
Spring对许多难用的Java EE API(如JDBC,JavaMail,长途调用等)供给了一个薄薄的封装层,经过Spring的简易封装,这些Java EE API的运用难度大为下降。
◆下载、设置Spring
http://springframework.org/
◆预备Spring设计环境
◆编写第一个Spring程序
HelloWorld接口:
Java代码 保藏代码
/**
*
* @Copyright(C),2009-2010 SISE Java Team.
* @Author:easinchu
* @Email:[email protected]
* @Description:
*/
public interface HelloWorld {
public void sayHello();
}
HelloWorldBean完结类:
Java代码 保藏代码
/**
*
* @Copyright(C),2009-2010 SISE Java Team.
* @Author:easinchu
* @Email:[email protected]
* @Description:
*/
public class HelloWorldBean implements HelloWorld{
private String helloWorld;
public void setHelloWorld(String helloWorld) {
this.helloWorld = helloWorld;
}
public void sayHello() {
System.out.println(helloWorld);
}
}
Spring XML装备文件ioc-config.xml:
Xml代码 保藏代码
Hello,Welcome To Spring World!
测验类:
Java代码 保藏代码
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
/**
*
*@Copyright(C),2009-2010 SISE Java Team.
*@Author:easinchu
*@Email:[email protected]
*@Description:选用Spring的BeanFactory结构IoC容器.
*/
public class FirstSpringDemo {
public static void main(String []args) {
//-----------BeanFactory IoC容器---------------------//
//从classpath途径上装载XML的装备信息
Resource resource = new ClassPathResource("ioc-config.xml");
//实例化IOC容器,此时容器并未实例化beans-config.xml所界说的各个受管bean.
BeanFactory factory = new XmlBeanFactory(resource);
/
//获取受管bean
HelloWorld hello = (HelloWorld)factory.getBean("helloWorldBean");
hello.sayHello();
}
}
过程小结
①利用XmlBeanFactory读取xml装备文件并树立BeanFactory实例
②BeanFactory根据装备文件完结依靠写入
③经过getBean()办法指定Bean称号获得Bean实例