一起学Spring

为什么要学Spring?

对我们而言,永远没有“最好”的框架,只有最适合自己需求的框架。在考虑一个框架时,你需要考虑的问题通常有这么几个:

  • 我使用的语言和平台支持这个框架吗?
  • 这个框架和其他我正在使用的框架的兼容性怎么样?
  • 学习这个框架的学习曲线是否太陡?
  • 它的开发效率如何?
  • 安全性如何?
  • 方便进行单元测试吗?
  • 这个框架的文档支持怎么样?社区够活跃吗?

对于笔者而言,学习曲线和开发效率是非常重要的,考虑到Spring完全使用Java语言,不需要再学习新的语言,另外Spring同其他框架的兼容性、可扩展性都非常好,更重要的是强大的文档支持和活跃的社区,让我选择Spring作为开发应用的主要框架。Spring未必是性能最卓越的,它的综合评分也不是最高的。但确实能满足我的大部分需求,越深入的学习越是能体会到它的强大,它能帮助我开发出稳定、安全而又简洁易维护的软件出来,所以也便有了这个系列教程。

下面列出Spring的优点

  • 轻量级:相较于EJB容器,Spring采用的IoC容器非常的轻量级,基础版本的Spring框架大约只有2MB。Spring可以让开发者们仅仅使用POJO(Plain Old Java Object,相对于EJB)就能够开发出企业级的应用。这样做的好处是,你不需要使用臃肿庞大的 EJB容器(应用服务器),你只需要轻量的servlet容器(如Tomcat)。尤其在一些开发当中,很稀缺内存和CPU资源时,采用Spring比EJB无论是开发还是部署应用都更节约资源。
  • 控制反转(IOC):Spring使用控制反转技术实现了松耦合。依赖被注入到对象,而不是创建或寻找依赖对象。
  • 面向切面编程(AOP): Spring支持面向切面编程,同时把应用的业务逻辑与系统的服务分离开来。
  • MVC框架:Spring MVC是一个非常好的MVC框架,可以替换其他web框架诸如Struts。
  • 集成性:Spring非常容易和其他的流行框架一起集成开发,这些框架包括:ORM框架,logging框架,JEE, Quartz,以及Struts等表现层框架。
  • 事务管理:Spring强大的事务管理功能,能够处理本地事务(一个数据库)或是全局事务(多个数据,采用JTA)。
  • 模块分离:Spring框架是由模块构成的。虽然已经有太多的包和类了,但它们都按照模块分好类了,你只需要考虑你会用到的模块,而不用理其他的模块。
  • 异常处理:由于Java的JDBC,Hibernate等API中有很多方法抛出的是checked exception,而很多开发者并不能很好的处理异常。Spring提供了统一的API将这些checked exception的异常转换成Spring的unchecked exception。
  • 单元测试:Spring写出来的代码非常容易做单元测试,可以采用依赖注射(Dependency Injection)将测试的数据注射到程序中。

不得不提到,如果你要开发一个大型的Web系统,MVC框架必不可少。Spring MVC作为其中的佼佼者,被大多数系统作为MVC框架,使用它的开发者也是最多的,其搜索热度一直居高不下。此外你也能得到更多的工作机会呢!

图片二 Dice.com统计的工作中需求的框架热度排名

图片二 Dice.com统计的工作中需求的框架热度排名

图片三 Google上的搜索频率排名

图片三 Google上的搜索频率排名

图片四 Indeed上工作热度排名

图片四 Indeed上工作热度排名

还犹豫什么,跟我一起来学Spring吧!


下面来介绍一下如何配置开发环境,配置包括:

配置JDK

要开发Java程序,首先需要配置JDK(Java Development Kit)。你可以在Oracle的网站上下载最新的JDK。截止自本教程写作的时候[2014年9月],最新的版本是Java SE 8u20,但我仍旧以更多人使用的JDK7作为本教程的JDK。

这个页面下载你的操作系统相应的JDK,我下载的是JDK 7u67。

安装好之后就要配置JAVA_HOME,PATH和CLASSPATH环境变量。

  • JAVA_HOME : JDK的安装目录
  • PATH : 告诉系统什么地方可以找到java,javac等程序,就不需要在执行运行程序时,在前面加上一长串路径了
  • CLASSPATH : 告诉系统从什么地方可以找到编译java程序需要的库

Windows配置

如果是使用Windows NT/2000/XP,右击我的电脑 ->属性 -> 高级 -> 环境变量。如果是使用Windows 7,右击我的电脑 ->属性 -> 左栏高级系统设置 -> 高级 -> 环境变量

图片一 Windows设置环境变量

图片一 Windows设置环境变量

假设你的JDK安装目录是C:\jdk1.7.0

  • 新建变量JAVA_HOME: C:\jdk1.7.0
  • 修改或新建变量PATH: %JAVA_HOME%\bin;
  • 修改或新建变量CLASSPATH: .;%JAVA_HOME%/lib/tools.jar;%JAVA_HOME%/lib/dt.jar

设置成功后,打开运行->CMD,输入java -version得到当前版本。

图片二 Windows查看Java版本

图片二 Windows查看Java版本

MAC配置

如果使用MacOSX Leopard,它自带有JDK,默认安装在/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/下,不需要另外下载安装。

当然如果你要使用最新的版本,你可以从Oracle的网站上下载。以本教程下载的JDK 7u67,安装默认会放在/Library/Java/JavaVirtualMachines/1.7.0_67.jdk/

安装之后使用java -version查看版本。如果安装了JDK 7之后仍然显示1.6.0的话,就要更改一下CurrentJDK所指向的路径。

1
cd /System/Library/Frameworks/JavaVM .framework /Versions/

然后ls -la,输出可能如下:

1
2
3
4
5
6
7
8
9
10
11
12
total 64
drwxr-xr-x  11 root  wheel  374  5  8 21:30 .
drwxr-xr-x  10 root  wheel  340  5  6 00:10 ..
lrwxr-xr-x   1 root  wheel   10  5  6 00:09 1.4 -> CurrentJDK
lrwxr-xr-x   1 root  wheel   10  5  6 00:09 1.4.2 -> CurrentJDK
lrwxr-xr-x   1 root  wheel   10  5  6 00:09 1.5 -> CurrentJDK
lrwxr-xr-x   1 root  wheel   10  5  6 00:09 1.5.0 -> CurrentJDK
lrwxr-xr-x   1 root  wheel   10  5  6 00:09 1.6 -> CurrentJDK
lrwxr-xr-x   1 root  wheel   10  5  6 00:09 1.6.0 -> CurrentJDK
drwxr-xr-x   7 root  wheel  238  5  6 00:10 A
lrwxr-xr-x   1 root  wheel    1  5  6 00:09 Current -> A
lrwxr-xr-x   1 root  wheel   58  5  8 21:30 CurrentJDK -> /System/Library/Java/JavaVirtualMachines/1 .6.0.jdk /Contents

使用下面的命令更改CurrentJDK指向的路径:

1
sudo ln -fhsv /Library/Java/JavaVirtualMachines/jdk1 .7.0_67.jdk /Contents CurrentJDK

然后编辑 ~/.bash_profile,加入以下配置:

1
2
3
export JAVA_HOME= /System/Library/Frameworks/JavaVM .framework /Versions/CurrentJDK/Home
export PATH=$PATH:$JAVA_HOME /bin
export CLASSPATH=$CLASSPATH:$JAVA_HOME /lib/dt .jar:$JAVA_HOME /lib/tools .jar

然后:

1
source ~/.bash_profile

然后再看看java -version的输出结果吧,

1
2
3
4
[~]$java -version
java version "1.7.0_67"
Java(TM) SE Runtime Environment (build 1.7.0_67-b01)
Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode)

其他系统配置JDK的教程请点击这里

多说一句,如果使用IDE开发的话,上面配置JDK的步骤并不是必须的,只不过配置JDK能直接通过java -version快速查看我们是否安装好了JDK。

配置IDE

这个教程的所有例子都是使用Eclipse作为IDE,其他IDE的配置类似。

本教程以配置Eclipse为例。在Eclipse官网上下载最新的版本。

下载后解压缩到你觉得方便的目录。譬如,Windows的C:\eclipse,或者Mac的~/Applications/eclipse

直接双击打开。

图片三 Eclipse

图片三 Eclipse

接下来让Eclipse知道JDK放在哪。点击Window > Preferences > Java > Installed JREs > Edit...(Windows)或者Preferences > Java > Installed JREs > Edit...(Mac)

图片四 设置Eclipse的JRE路径

图片四 设置Eclipse的JRE路径

JRE Home指向的JRE的安装

图片五 设置Eclipse的JRE路径

图片五 设置Eclipse的JRE路径

下载Spring

这里下载Spring。

我下载的版本是spring-framework-3.2.9.RELEASE-dist.zip。解压缩放到任意目录,譬如~/spring-framework-3.2.9/

图片五 Spring安装目录

图片五 Spring安装目录

环境配置好之后,准备用Eclipse开发你的第一个HelloWorld程序吧!
















让我们用Spring来写第一个应用程序吧。

完成这一章要求:

  • 熟悉Java语言
  • 设置好Spring的环境
  • 熟悉简单的Eclipse IDE的操作

如果你还没有设置好环境,请参考Spring开发环境的配置

我们第一个程序是打印”Hello World”语句,这个语句通过Spring的配置文件来设置。

1 – 新建Java项目:

第一步用Eclipse IDE新建一个项目。 点击 > File > New > Java Project。然后在弹出的对话框中输入项目的名称,我们就叫HelloWorld吧。这会在你的workspace下新建一个HelloWorld的目录作为项目的根目录。

图片一 新建Java项目

图片一 新建Java项目

点击Finish。你会在Project Explorer视图看到新建的项目。如果Project Explorer没有打开,请在> Window > Show View中找到。

图片二 Project Explorer视图

图片二 Project Explorer视图

2 – 添加Spring库

接下来要加入必要的Spring库添加到CLASSPATH下,以便Eclipse编译和运行程序时能够找到所需要的class。

右键在Package Explorer中点击> Build Path > Configure Build Path...。然后点击Add External JARs...加入我们需要的Spring库。如果还没有下载Spring库,请先下载Spring库

我们需要加入的Spring库有:

  • org.springframework.aop-3.2.9
  • org.springframework.aspects-3.2.9
  • org.springframework.beans-3.2.9
  • org.springframework.context-3.2.9
  • org.springframework.context.support-3.2.9
  • org.springframework.core-3.2.9
  • org.springframework.expression-3.2.9

此外,为了打印信息,我们还需要一个Apache Commons Logging API,在这里下载commons-logging-1.2。本教程写作的时候,最新版是commons-logging-1.2。下载后解压缩到任意目录,我解压到~/commons-logging-1.2

然后和添加Spring库一样添加commons-logging-1.2.jar到CLASSPATH中。

图片三 添加Spring库

图片三 添加Spring库

3 – Java源代码

首先新建一个包“com.importnew”。右键点击src,然后> New > Package,新建com.importnew包。

然后我们需要在com.importnew包下新建两个Java源文件HelloWorld.javaMainApp.java

HelloWorld.java:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package com.importnew;
 
public class HelloWorld {
 
     private String message;
 
     public void setMessage(String message){
         this .message  = message;
     }
 
     public String getMessage(){
         return this .message;
     }
 
     public void printMessage(){
         System.out.println( "Your Message : " + message);
     }
}

MainApp.java:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package com.importnew;
 
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
 
public class MainApp {
     public static void main(String[] args) {
 
         ApplicationContext context = new ClassPathXmlApplicationContext( "Beans.xml" );
 
         HelloWorld obj = (HelloWorld) context.getBean( "helloWorld" );
 
         obj.printMessage();
     }
}

4 – 配置文件

接下来,我们需要新建一个XML文件来配置bean,这个XML的作用是集中在一个地方,配置和管理所有的bean。有关bean的概念,请看Bean的定义

我们将这个XML文件也放在src下面,这样就保证Eclipse可以在CLASSPATH下读取到这个文件。

新建一个Beans.xml,当然这个文件名任意,不过要和MainApp.java中ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml")设置的一致。

Beans.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
     <? xml version = "1.0" encoding = "UTF-8" ?>
 
     < 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-3.0.xsd">
 
        < bean id = "helloWorld" class = "com.importnew.HelloWorld" >
            < property name = "message" value = "Hello World!" />
        </ bean >
 
     </ beans >

这个Beans.xml文件中设置了bean,包含在<beans></beans>中。每个bean都有一个唯一的id。


这个语句为message变量赋值,这样就能打印出Hello World!了。要修改输出,只需要修改XML文件,而不需要修改MainApp.java和HelloWorld.java。

整个HelloWorld项目的目录如图:

图片四 HelloWorld项目结构目录

图片四 HelloWorld项目结构目录

5 – 运行程序

当你完成了以上的步骤,我们便可以运行程序了。

右键MainApp.java,点击> Run As > Java Application。也可以在工具栏找到运行按钮。

如果一切正常,输出如下:

1
Your Message : Hello World!

回顾运作流程

  1. 首先会运行main()语句,Spring框架使用ClassPathXmlApplicationContext()首先创建一个容器。
  2. 这个容器从Beans.xml中读取配置信息,并根据配置信息来创建bean(也就是对象),每个bean有唯一的id。
  3. 然后通过context.getBean()找到这个id的bean,获取对象的引用。
  4. 通过对象的引用调用printMessage()方法来打印信息。

好了,这是你的第一个Spring应用。你已经学会用Eclipse新建Java项目,导入Spring和commons-logging库,编写Java源代码和XML配置文件,并且成功运行了。如果要更改输出,只需要修改XML文件中的value值,而不需要更改Java源文件。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值