转载

Spring之旅(一)

Spring之旅(一)

这一周的时间都在研究JavaWeb应用开发框架,像struts,hibernate,还有今天要写的Spring,虽然有时摸不着头脑,但总体来说,也颇有收获,在工作暂无需求的情况下,去探究些自己未知又迫切想知道的技术,也是蛮好的,起码说自己是感兴趣的,接下来的一段时间,对这些Web框架的学习,我会做一个总结,方便自己温故,也希望能帮助到喜欢这些技术的朋友。

《Spring之旅》的第一篇文章,我准备先大概的说一下相关的概念理论知识,环境的配置,到最后的时候,以一个简单的案例结束,虽然说相关概念网上有很多,但作为笔记的一部分,也是不可缺少的,我尽量删繁就简,避轻就重的来总结,省去那些枯燥的文字。

Spring简介

Spring是一个开源的框架,是为了解决企业应用程序开发的复杂性而创建的。该框架的主要优势是良好的设计和分层架构,软件开发人员可以只选择Spring提供的某项技术,例如 IOC,而不需要使用它提供的其他技术。同时,Spring还提供了和其他开源软件的无缝结合,为J2EE应用程序开发提供可了集成的框架。

Spring框架介绍

Spring 是一个提供了解决J2EE问题的一站式框架,核心:控制反转,通过配置文件来完成业务对象之间的依赖注入,他鼓励一个良好的习惯,那就是注入对接口编程而不是对类编程,事务处理:他能够在各种底层事务处理技术上提供一个统一的编程模型。

模块详解:

Spring 框架提供约 20 个模块,可以根据应用程序的要求来使用。

Spring之旅(一)

核心容器

核心容器由核心Bean,上下文和表达式语言模块组成,它们的细节如下:

核心模块提供了框架的基本组成部分,包括 IOC 和依赖注入功能。

Bean 模块提供 BeanFactory,它是一个工厂模式的复杂实现。

上下文模块建立在由核心和 Bean 模块提供的坚实基础上,它是访问定义和配置的任何对象的媒介。ApplicationContext 接口是上下文模块的重点。

表达式语言模块在运行时提供了查询和操作一个对象图的强大的表达式语言。

数据访问/集成

数据访问/集成层包括 JDBC,ORM,OXM,JMS 和事务处理模块,它们的细节如下:

JDBC 模块提供了删除冗余的 JDBC 相关编码的 JDBC 抽象层。

ORM 模块为流行的对象关系映射 API,包括 JPA,JDO,Hibernate 和 iBatis,提供了集成层。

OXM 模块提供了抽象层,它支持对 JAXB,Castor,XMLBeans,JiBX 和 XStream 的对象/XML 映射实现。

Java 消息服务 JMS 模块包含生产和消费的信息的功能。

事务模块为实现特殊接口的类及所有的 POJO 支持编程式和声明式事务管理。

Web

Web 层由 Web,Web-MVC,Web-Socket 和 Web-Portlet 组成,它们的细节如下:

Web 模块提供了基本的面向 web 的集成功能,例如多个文件上传的功能和使用 servlet 监听器和面向 web 应用程序的上下文来初始化 IoC 容器。

Web-MVC 模块包含 Spring 的模型-视图-控制器(MVC),实现了 web 应用程序。

Web-Socket 模块为 WebSocket-based 提供了支持,而且在 web 应用程序中提供了客户端和服务器端之间通信的两种方式。

Web-Portlet 模块提供了在 portlet 环境中实现 MVC,并且反映了 Web-Servlet 模块的功能。

其他

还有其他一些重要的模块,像 AOP,Aspects,Instrumentation,Web 和测试模块,它们的细节如下:

AOP 模块提供了面向方面的编程实现,允许你定义方法拦截器和切入点对代码进行干净地解耦,它实现了应该分离的功能。

Aspects 模块提供了与 AspectJ 的集成,这是一个功能强大且成熟的面向切面编程(AOP)框架。

Instrumentation 模块在一定的应用服务器中提供了类 instrumentation 的支持和类加载器的实现。

Messaging 模块为 STOMP 提供了支持作为在应用程序中 WebSocket 子协议的使用。它也支持一个注解编程模型,它是为了选路和处理来自 WebSocket 客户端的 STOMP 信息。

测试模块支持对具有 JUnit 或 TestNG 框架的 Spring 组件的测试。

环境配置:

安装JDK,Eclipse IDE,相信大家学过Java的都会安装了,这里我给出下载地址:初学的同学,可以下载,按照网上的流程来一步步的安装吧,这里就不细讲了,有一点事需要提的,为了方便以后的学习,我还是希望大家能够去网上下载MyEclipse。

JDK下载地址:

http://www.oracle.com/technetwork/java/javase/downloads/index.html

Eclipse下载地址:

http://www.eclipse.org/downloads/

安装 Spring 框架库

上述都安装成功之后,那么接下来我们需要安装Spring这个框架库了,我不知道别人是如果安装学习的,我是下载的Jar包放入WEB-INF/lib下进行学习的,当然了,大家可以选择自己喜欢的学习方式。

Spring下载地址: http://repo.spring.io/release/org/springframework/spring/

大家可以选择最新的版本进行下载。下载完成,解压后,目录应该如下,主要的Jar包都在libs下,我们可以选择自己需要的Jar包复制到项目中,当然了为了省事大家也可以复制一些主要的Jar包(除javadoc和sources结尾的,都是主要的,大概有20个):

Spring之旅(一)

注意一点(提前说一下):

如果我们按照上述的顺序,写好程序后,去运行,会发现有错误,这个错误如下:

Spring之旅(一)

解决这个错误呢,那么就需要安装Apache Commons Logging API,下载最新的commons-logging-xx.jar,放入WEB-INF/lib下就可以解决了。

下载地址: http://commons.apache.org/proper/commons-logging/download_logging.cgi

Hello,World实例:

是不是有点迫不及待的想实现一下呢,创建一个Web项目,这里我用的是MyEclipse,New一个Web项目后,先把我们需要的Jar包放进WEB-INF/lib下,核心的,上述我已经说过了,大概有20个(不是javadoc和sources结尾的都是),这里我贴个图吧可能有的初学同学不知道,以下javadoc和sources结尾不要复制,其它的都复制到WEB-INF/lib下。

Spring之旅(一)

以下就是复制的所有Jar包,注意 commons-logging这个Jar包别忘了复制

Spring之旅(一)

Jar包引入后,就开始写代码吧,src下创建我们的包名,包下创建一个HelloWorld类,定义一个成员变量,包名和类名我们自己定义并不一定按照我写的这样,定义如下:

public class HelloWorld {
    private String message;

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}

src下创建Spring的xml配置文件,名字自己定义,这里我定义的是app.xml,格式如下:

    <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xmlns:p="http://www.springframework.org/schema/p"
        xmlns:context="http://www.springframework.org/schema/context"
        xmlns:aop="http://www.springframework.org/schema/aop" 
        xmlns:tx="http://www.springframework.org/schema/tx"
        xsi:schemaLocation="http://www.springframework.org/schema/beans   
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
        http://www.springframework.org/schema/context   
        http://www.springframework.org/schema/context/spring-context-3.0.xsd  
        http://www.springframework.org/schema/tx   
        http://www.springframework.org/schema/tx/spring-tx-3.0.xsd  
        http://www.springframework.org/schema/aop  
        http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">  
<bean id="hello" class="com.abner.ming.HelloWorld" >
<property name="message">
<value>Hello,World</value>
</property>
</bean>

</beans>

定义一个测试类来测试一下吧:

public class HelloMain {
    public static void main(String[] args) {
        ApplicationContext ac=new FileSystemXmlApplicationContext("src/app.xml");
        HelloWorld hw=(HelloWorld)ac.getBean("hello");
        System.out.println(hw.getMessage());
    }

}

以上的程序写好之后,运行之后,就会打印出Hello,World这句话,想打印其它的话,我们只需要改变xml里的配置即可,是不是方便了很多,为什么要这么用,这就是Spring的核心容器Bean的特色,好了,下一篇再陈述吧。

原文  http://mp.weixin.qq.com/s/t3y0XL8AWszM4veue1ZQSQ
正文到此结束
Loading...