Spring的概述

Spring的历史
Spring的初衷与目标
Spring框架
第一个Spring程序

Spring的历史
要讲到Spring的历史,就要先回顾一下J2EE的历史,J2EE应用程序的广泛实现是在2000年开始的,它的出现带来了诸如事务管理之类的核心中间层概念的标准化,但是在实践中并没有获得绝对的成功,因为开发效率,开发难度和实际的性能都令人失望。
Spring出现的一个最大的目标就是使J2EE开发变得更加容易。同时,Spring之所以与Struts、 Hibernate等单层框架不同,是因为Spring致力于提供一个以统一的、高效的方式构造整个应用,并且可以将单层框架以最佳的组合揉和在一起建立一个连贯的体系。可以说Spring是一个提供了更完善开发环境的框架,可以为普通的Java对象提供企业级的服务。

Spring的初衷与目标
Spring的初衷
J2EE开发应该更加简单。
使用接口而不是使用类,是更好的编程习惯。Spring将使用接口的复杂度几乎降低到了零。
为JavaBean提供了一个更好的应用配置框架。
更多地强调面向对象的设计,而不是现行的技术,如J2EE。
尽量减少不必要的异常捕捉。
使应用程序更加容易测试。
Spring的目标
可以令人方便愉快的使用Spring。
应用程序代码并不依赖于Spring APIs。
Spring不和现有的解决方案竞争,而是致力于将它们融合在一起。


Spring框架
Spring框架包含许多特性,并被很好地组织在下图所示的七个模块中
加图

Spring Core
Core 封装包是框架的最基础部分,提供IoC和依赖注入特性。这里的基础概念是BeanFactory,它提供对Factory模式的经典实现来消除对程序性单例模式的需要,并真正地允许你从程序逻辑中分离出依赖关系和配置。
Spring Context
构建于Core封装包基础上的 Context封装包,提供了一种框架式的对象访问方法,有些象JNDI注册器。Context封装包的特性得自于Beans封装包,并添加了对国际化(I18N)的支持(例如资源绑定),事件传播,资源装载的方式和Context的透明创建,比如说通过Servlet容器。
Spring DAO
DAO 提供了JDBC的抽象层,它可消除冗长的JDBC编码和解析数据库厂商特有的错误代码。 并且,JDBC 封装包还提供了一种比编程性更好的声明性事务管理方法,不仅仅是实现了特定接口,而且对所有的POJOs(plain old Java objects)都适用。
Spring ORM
ORM 封装包提供了常用的“对象/关系”映射APIs的集成层。 其中包括JPA、JDO、Hibernate 和 iBatis 。利用ORM封装包,可以混合使用所有Spring提供的特性进行“对象/关系”映射,如前边提到的简单声明性事务管理。
Spring AOP
Spring的 AOP 封装包提供了符合 AOP Alliance规范的面向方面的编程(aspect-oriented programming)实现,让你可以定义,例如方法拦截器(method-interceptors)和切点(pointcuts),从逻辑上讲,从而减弱代码的功能耦合,清晰的被分离开。
Spring Web
Spring中的 Web 包提供了基础的针对Web开发的集成特性,例如多方文件上传,利用Servlet listeners进行IoC容器初始化和针对Web的application context。当与WebWork或Struts一起使用Spring时,这个包使Spring可与其他框架结合。
Spring Web MVC
Spring中的 MVC 封装包提供了Web应用的Model-View-Controller(MVC)实现。Spring的MVC框架并不是仅仅提供一种传统的实现,它提供了一种 清晰的 分离模型,在领域模型代码和web form之间。并且,还可以借助Spring框架的其他特性。

第一个Spring程序
下载Spring相关的jar文件
简单的Bean
package org.fire;

//一个简单的JavaBean
public class HelloBean {
    private String helloWorld;

    public String getHelloWorld() {
        return helloWorld;
    }

    public void setHelloWorld(String helloWorld) {
        this.helloWorld = helloWorld;
    }
}

Bean的配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!-- Bean定义的文件中的根节点 -->
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
    <!-- 为每一个Bean进行设置 -->
    <!-- 设置Bean实例的识别名称 -->
    <!-- 指定Bean的类名称 -->
    <bean id="helloBean" class="org.fire.HelloBean">
        <!-- 设置Setter的名称 -->
        <property name="helloWorld">
            <!-- 设置要注入的字符串值 -->
            <value>Hello!fire</value>
        </property>
    </bean>
</beans>

示范程序
package org.fire;
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;
//示范程序
public class SpringDemo {
    public static void main(String[] args) {
        // 在classpath下读取指定的Bean定义文件
        Resource rs = new ClassPathResource("beans-config.xml");
        // 定义并建立BeanFactory
        // Spring所提供的IoC容器
        BeanFactory factory = new XmlBeanFactory(rs);
        // 指定Bean的名称来取得Bean实例
        HelloBean hello = (HelloBean) factory.getBean("helloBean");
        System.out.println(hello.getHelloWorld());
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值