为什么要学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框架,使用它的开发者也是最多的,其搜索热度一直居高不下。此外你也能得到更多的工作机会呢!
还犹豫什么,跟我一起来学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,右击我的电脑 ->属性 -> 左栏高级系统设置 -> 高级 -> 环境变量
假设你的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得到当前版本。
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知道JDK放在哪。点击Window > Preferences > Java > Installed JREs > Edit...(Windows)或者Preferences > Java > Installed JREs > Edit...(Mac)
将JRE Home指向的JRE的安装
下载Spring
在这里下载Spring。
我下载的版本是spring-framework-3.2.9.RELEASE-dist.zip。解压缩放到任意目录,譬如~/spring-framework-3.2.9/
环境配置好之后,准备用Eclipse开发你的第一个HelloWorld程序吧!
让我们用Spring来写第一个应用程序吧。
完成这一章要求:
- 熟悉Java语言
- 设置好Spring的环境
- 熟悉简单的Eclipse IDE的操作
如果你还没有设置好环境,请参考Spring开发环境的配置。
我们第一个程序是打印”Hello World”语句,这个语句通过Spring的配置文件来设置。
1 – 新建Java项目:
第一步用Eclipse IDE新建一个项目。 点击 > File > New > Java Project。然后在弹出的对话框中输入项目的名称,我们就叫HelloWorld吧。这会在你的workspace下新建一个HelloWorld的目录作为项目的根目录。
点击Finish。你会在Project Explorer视图看到新建的项目。如果Project Explorer没有打开,请在> Window > Show View中找到。
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中。
3 – Java源代码
首先新建一个包“com.importnew”。右键点击src,然后> New > Package,新建com.importnew包。
然后我们需要在com.importnew包下新建两个Java源文件HelloWorld.java和MainApp.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项目的目录如图:
5 – 运行程序
当你完成了以上的步骤,我们便可以运行程序了。
右键MainApp.java,点击> Run As > Java Application。也可以在工具栏找到运行按钮。
如果一切正常,输出如下:
|
1
|
Your Message : Hello World!
|
回顾运作流程
- 首先会运行main()语句,Spring框架使用
ClassPathXmlApplicationContext()首先创建一个容器。 - 这个容器从
Beans.xml中读取配置信息,并根据配置信息来创建bean(也就是对象),每个bean有唯一的id。 - 然后通过
context.getBean()找到这个id的bean,获取对象的引用。 - 通过对象的引用调用
printMessage()方法来打印信息。
好了,这是你的第一个Spring应用。你已经学会用Eclipse新建Java项目,导入Spring和commons-logging库,编写Java源代码和XML配置文件,并且成功运行了。如果要更改输出,只需要修改XML文件中的value值,而不需要更改Java源文件。
本文介绍了Spring框架的优势,如轻量级、控制反转、面向切面编程等,并指导如何配置开发环境,从JDK、IDE到Spring库的下载与添加,以及编写Java源代码和XML配置文件的步骤。通过实践操作,读者可以成功搭建自己的Spring应用。














被折叠的 条评论
为什么被折叠?



