Professional Documents
Culture Documents
Eclipse 是目前非常流行的开发平台,开放扩展的架构让很多程序员找到了自己个性化
的工作环境。
问题提出:
在采用 Spring 框架进行系统开发时,Bean 的配置文件 XML 的书写、XML 文件的内容校
验及 Bean 之间的依赖关系查看等工作,如果能够采用合适的工具来完成,会成倍提高开
发效率。
解决方法:
Spring IDE 是 Spring 官方网站推荐的 Eclipse 插件,可提供在开发 Spring 时对 Bean
定义文件进行验证并以可视化的方式查看各个 Bean 之间的依赖关系等。
同时,建议结合 Eclipse XMLBuddy 插件进行 XML 文件编辑与校验,是个不错的选择。
作者:俞黎敏 共 38 页,第 1 页
主页:http://202.101.111.1/123/
博客:http://iAMin.BlogDriver.com
Eclipse 插件之 Spring IDE
安装说明
JDK:1.5.0 从 http://java.sun.com 上去下载安装
Eclipse:3.1.2 从 http://www.eclipse.org 上去下载解压
Spring 1.2.8 从 http://www.springframework.org 上去下载解压
Spring IDE 1.3.2 从 http://springide.org 上去下载
XMLBuddy 2.0.72 从 http://www.xmlbuddy.com/ 上去下载
作者:俞黎敏 共 38 页,第 2 页
主页:http://202.101.111.1/123/
博客:http://iAMin.BlogDriver.com
Eclipse 插件之 Spring IDE
管理技巧
Eclipse 使用技巧之插件管理
作者:俞黎敏 共 38 页,第 3 页
主页:http://202.101.111.1/123/
博客:http://iAMin.BlogDriver.com
Eclipse 插件之 Spring IDE
5、 把下载的新插件的文件放在以下相应目录中;
%ECLIPSE_HOME%\PlugInsNew\XYZ\eclipse\features
%ECLIPSE_HOME%\PlugInsNew\ XYZ\eclipse\plugins
6、 建立相关的.link 的文件;
然后在%ECLIPSE_HOME%\links 目录里建立一个 XYZ.link 的文件
内容如是:
path=E:/OpenSource/Eclipse/PlugInsNew/XYZ
就一行这样的路径指示而已。
这样,如果你下载了多个插件就可以如法炮制建立多个 Link 文件,想加载哪个插件就
把哪个插件的 Link 文件放到%ECLIPSE_HOME%\links 的目录中即可,使用与管理都很方便,
建议千万不要放在默认的安装目录中,这样对于升级 Eclipse 主程序也方便一些;当然如果
你喜欢用 Find and Install…进行安装的话也可以的;
如果上面你的%ECLIPSE_HOME%与此不同,请修改 XYZ.link 文件里的路径。
7、 删除插件,先关闭 Eclipse;
删除%ECLIPSE_HOME%\links\XYZ.link 文件即可
删除%ECLIPSE_HOME%\PlugInsNew\XYZ 整个目录及文件
8、 重新启动 Eclipse,这样就可以了。如果插件没有生效或者没有删除,请加上-clean 进行
启动 Eclipse,即 Eclipse.exe –clean
9、 插件安装验证及记录详见:Eclipse 的 workspace 下面的.metadata\.log 文件,比如:
%ECLIPSE_HOME%\workspace\.metadata\.log 文件,有问题的话,打开这个文件看看并
进行解决。
作者:俞黎敏 共 38 页,第 4 页
主页:http://202.101.111.1/123/
博客:http://iAMin.BlogDriver.com
Eclipse 插件之 Spring IDE
确认安装
此插件安装方法采用上一节的《Eclipse 使用技巧之插件管理》
重新启动 Eclipse 后,在 Help About Eclipse SDK Plug-in Details 你可以看
到由“Spring IDE Developer”提供的“Spring IDE”版本为“1.3.2”插件及相关的 Graph、
UI 及 UI Search 插件,如下图所示:
作者:俞黎敏 共 38 页,第 5 页
主页:http://202.101.111.1/123/
博客:http://iAMin.BlogDriver.com
Eclipse 插件之 Spring IDE
相关要求
注意:为了让 Spring IDE 插件能够显示可视化的 Bean 结构图形及 Bean 之间的依赖关
系,需要 Eclipse GEF(Graphical Editing Framework)的支持,自己下载并解压安装,安
装技巧同上《Eclipse 使用技巧之插件管理》。
解压后目录结构及包的说明如下:
可以好好参考一下;
src 目录下是 Spring 的源程序;
test 目录下 Spring 的单元测试源程序;
tiger 目录下是 Java 1.5 Tiger 方面的相关及测试源程序。
作者:俞黎敏 共 38 页,第 7 页
主页:http://202.101.111.1/123/
博客:http://iAMin.BlogDriver.com
Eclipse 插件之 Spring IDE
Spring 包结构说明
接下来详细说说 dist 目录下 jar 包的相关内容
spring-core.jar
这个 jar 文件包含 Spring 框架基本的核心工具类,Spring 其它组件要都要使用到这个包
里的类,是其它组件的基本核心,当然你也可以在自己的应用系统中使用这些工具类。
spring-beans.jar
这个 jar 文件是所有应用都要用到的,它包含访问配置文件、创建和管理 bean 以及进行
Inversion of Control / Dependency Injection(IoC/DI)操作相关的所有类。如果应用只需基本
的 IoC/DI 支持,引入 spring-core.jar 及 spring-beans.jar 文件就可以了。
spring-aop.jar
这个 jar 文件包含在应用中使用 Spring 的 AOP 特性时所需的类。使用基于 AOP 的 Spring
特性,如声明型事务管理(Declarative Transaction Management),也要在应用里包含这个 jar
包。
spring-context.jar
这个 jar 文件为 Spring 核心提供了大量扩展。可以找到使用 Spring ApplicationContext
特性时所需的全部类,JDNI 所需的全部类,UI 方面的用来与模板(Templating)引擎如
Velocity、FreeMarker、JasperReports 集成的类,以及校验 Validation 方面的相关类。
spring-dao.jar
这个 jar 文件包含 Spring DAO、Spring Transaction 进行数据访问的所有类。为了使用声
明型事务支持,还需在自己的应用里包含 spring-aop.jar。
spring-hibernate.jar
这个 jar 文件包含 Spring 对 Hibernate 2 及 Hibernate 3 进行封装的所有类。
spring-jdbc.jar
这个 jar 文件包含对 Spring 对 JDBC 数据访问进行封装的所有类。
作者:俞黎敏 共 38 页,第 8 页
主页:http://202.101.111.1/123/
博客:http://iAMin.BlogDriver.com
Eclipse 插件之 Spring IDE
spring-orm.jar
这个 jar 文件包含 Spring 对 DAO 特性集进行了扩展,使其支持 iBATIS、JDO、OJB、
TopLink,因为 Hibernate 已经独立成包了,现在不包含在这个包里了。这个 jar 文件里大部
分的类都要依赖 spring-dao.jar 里的类,用这个包时你需要同时包含 spring-dao.jar 包。
spring-remoting.jar
这个 jar 文件包含支持 EJB、JMS、远程调用 Remoting(RMI、Hessian、Burlap、Http Invoker、
JAX-RPC)方面的类。
spring-support.jar
这个 jar 文件包含支持缓存 Cache(ehcache) 、JCA、JMX、邮件服务(Java Mail、COS
Mail)、任务计划 Scheduling(Timer、Quartz)方面的类。
spring-web.jar
这个 jar 文件包含 Web 应用开发时,用到 Spring 框架时所需的核心类,包括自动载入
WebApplicationContext 特性的类、Struts 与 JSF 集成类、文件上传的支持类、Filter 类和大量
工具辅助类。
spring-webmvc.jar
这个 jar 文件包含 Spring MVC 框架相关的所有类。包含国际化、标签、Theme、视图展
现的 FreeMarker、JasperReports、Tiles、Velocity、XSLT 相关类。当然,如果你的应用使用
了独立的 MVC 框架,则无需这个 JAR 文件里的任何类。
spring-mock.jar
这个 jar 文件包含 Spring 一整套 mock 类来辅助应用的测试。Spring 测试套件使用了其
中大量 mock 类,这样测试就更加简单。模拟 HttpServletRequest 和 HttpServletResponse 类在
Web 应用单元测试是很方便的。
如何选择这些发布包,决定选用哪些发布包其实相当简单。如果你正在构建 Web 应用
并将全程使用 Spring,那么最好就使用单个全部的 spring.jar 文件;如果你的应用仅仅用到
简单的 Inversion of Control / Dependency Injection(IoC/DI)容器,那么只需 spring-core.jar
与 spring-beans.jar 即可;如果你对发布的大小要求很高,那么就得精挑细选了,只取包含自
己所需特性的 jar 文件了。采用独立的发布包你可以避免包含自己的应用不需要的全部类。
当然你可以采用其它的一些工具来设法令整个应用包变小,节省空间的重点在于准确地找出
自己所需的 Spring 依赖类,然后合并所需的类与包就可以了。Eclispe 有个插件叫 ClassPath
Helper 可以帮你找找所依赖的类。
作者:俞黎敏 共 38 页,第 9 页
主页:http://202.101.111.1/123/
博客:http://iAMin.BlogDriver.com
Eclipse 插件之 Spring IDE
Spring 包依赖说明
Spring 各个包之间的依赖关系如下,每个包都需要有 commons-logging.jar
spring-core.jar 需 commons-collections.jar,spring-core.jar 是以下其它各个的基本。
spring-beans.jar 需 spring-core.jar/cglib-nodep-2.1_3.jar
spring-aop.jar 需 spring-core.jar/spring-beans.jar/cglib-nodep-2.1_3.jar/aopalliance.jar
spring-context.jar 需
spring-core.jar/spring-beans.jar/spring-aop.jar/commons-collections.jar/aopalliance.jar
spring-dao.jar 需 spring-core.jar/spring-beans.jar/spring-aop.jar/spring-context.jar
spring-jdbc.jar 需 spring-core.jar/spring-beans.jar/spring-dao.jar
spring-web.jar 需 spring-core.jar/spring-beans.jar/spring-context.jar
spring-webmvc.jar 需 spring-core.jar/spring-beans.jar/spring-context.jar/spring-web.jar
spring-hibernate.jar 需
spring-core.jar/spring-beans.jar/spring-aop.jar/spring-dao.jar/spring-jdbc.jar/spring-orm.jar/spring-
web.jar/spring-webmvc.jar
spring-orm.jar 需
spring-core.jar/spring-beans.jar/spring-aop.jar/spring-dao.jar/spring-jdbc.jar/spring-web.jar/spring
-webmvc.jar
spring-remoting.jar 需
spring-core.jar/spring-beans.jar/spring-aop.jar/spring-dao.jar/spring-context.jar/spring-web.jar/spri
ng-webmvc.jar
spring-support.jar 需
spring-core.jar/spring-beans.jar/spring-aop.jar/spring-dao.jar/spring-context.jar/spring-jdbc.jar
spring-mock.jar 需 spring-core.jar/spring-beans.jar/spring-dao.jar/spring-context.jar/spring-jdbc.jar
作者:俞黎敏 共 38 页,第 10 页
主页:http://202.101.111.1/123/
博客:http://iAMin.BlogDriver.com
Eclipse 插件之 Spring IDE
插件介绍
我们简单地创建一个示例工程,里面包含有一个接口类与两个实现该接口的实现类进行
演示说明使用的方法。
需要引入 spring.jar、commons-logging.jar、log4j.jar
单个引入需要引入 spring-core.jar、spring-beans.jar、spring-context.jar
接口类:IHelloWorld.java
public interface IHelloWorld
{
String sayHelloWorld();
}
实现类一:HelloWorld1.java
public class HelloWorld1 implements IHelloWorld
{
public HelloWorld1()
{
super();
}
beanRefFactory.xml 的内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="beanFactory"
class="org.springframework.context.support.ClassPathXmlApplicationContext">
<constructor-arg>
<list>
<value>beanRefDataAccess.xml</value>
<value>beanRefService.xml</value>
<value>beanRefMVC.xml</value>
</list>
</constructor-arg>
</bean>
</beans>
作者:俞黎敏 共 38 页,第 12 页
主页:http://202.101.111.1/123/
博客:http://iAMin.BlogDriver.com
Eclipse 插件之 Spring IDE
beanRefDataAccess.xml 的内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="helloWorldDAO1" class="HelloWorld1"/>
<bean id="helloWorldDAO2" class="HelloWorld2"/>
</beans>
beanRefService.xml 的内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="helloWorld1" class="HelloWorld1"/>
<bean id="helloWorld2" class="HelloWorld2"/>
<bean id="springDemoConstructor" class="SpringDemoConstructor">
<constructor-arg>
<value>Spring IDE Constructor</value>
</constructor-arg>
<property name="helloWorld">
<ref bean="helloWorld1"></ref>
</property>
</bean>
<bean id="springDemoSetter" class="SpringDemoSetter">
<property name="hello" value="Spring IDE Setter"/>
<property name="helloWorld">
<ref bean="helloWorld2"></ref>
</property>
</bean>
</beans>
beanRefMVC.xml 的内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC
"-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="helloWorldMVC1" class="HelloWorld1"/>
<bean id="helloWorldMVC2" class="HelloWorld2"/>
</beans>
作者:俞黎敏 共 38 页,第 13 页
主页:http://202.101.111.1/123/
博客:http://iAMin.BlogDriver.com
Eclipse 插件之 Spring IDE
作者:俞黎敏 共 38 页,第 14 页
主页:http://202.101.111.1/123/
博客:http://iAMin.BlogDriver.com
Eclipse 插件之 Spring IDE
你选择这个菜单进行移除后就不能进行以下的相关操作了。☺
作者:俞黎敏 共 38 页,第 15 页
主页:http://202.101.111.1/123/
博客:http://iAMin.BlogDriver.com
Eclipse 插件之 Spring IDE
作者:俞黎敏 共 38 页,第 16 页
主页:http://202.101.111.1/123/
博客:http://iAMin.BlogDriver.com
Eclipse 插件之 Spring IDE
弹出属性框,让我们来添加配置文件
作者:俞黎敏 共 38 页,第 17 页
主页:http://202.101.111.1/123/
博客:http://iAMin.BlogDriver.com
Eclipse 插件之 Spring IDE
确定后,可以看到刚才选择的四个配置文件已经在里面了,再次确定。
作者:俞黎敏 共 38 页,第 18 页
主页:http://202.101.111.1/123/
博客:http://iAMin.BlogDriver.com
Eclipse 插件之 Spring IDE
作者:俞黎敏 共 38 页,第 19 页
主页:http://202.101.111.1/123/
博客:http://iAMin.BlogDriver.com
Eclipse 插件之 Spring IDE
也可以将配置文件放到配置集合里,如下所示:
作者:俞黎敏 共 38 页,第 20 页
主页:http://202.101.111.1/123/
博客:http://iAMin.BlogDriver.com
Eclipse 插件之 Spring IDE
作者:俞黎敏 共 38 页,第 21 页
主页:http://202.101.111.1/123/
博客:http://iAMin.BlogDriver.com
Eclipse 插件之 Spring IDE
作者:俞黎敏 共 38 页,第 22 页
主页:http://202.101.111.1/123/
博客:http://iAMin.BlogDriver.com
Eclipse 插件之 Spring IDE
作者:俞黎敏 共 38 页,第 23 页
主页:http://202.101.111.1/123/
博客:http://iAMin.BlogDriver.com
Eclipse 插件之 Spring IDE
就会自动定位到对应的类文件里去了,如下所示。
作者:俞黎敏 共 38 页,第 24 页
主页:http://202.101.111.1/123/
博客:http://iAMin.BlogDriver.com
Eclipse 插件之 Spring IDE
在右键弹出的菜单点选中“Show Graph”,
但是这个演示的文件仅是一个独立的 bean,没有任何关联等,下面会演示关联等。
作者:俞黎敏 共 38 页,第 25 页
主页:http://202.101.111.1/123/
博客:http://iAMin.BlogDriver.com
Eclipse 插件之 Spring IDE
作者:俞黎敏 共 38 页,第 26 页
主页:http://202.101.111.1/123/
博客:http://iAMin.BlogDriver.com
Eclipse 插件之 Spring IDE
定义一个接口类 ISpringDemo.java,有两个方法
作者:俞黎敏 共 38 页,第 27 页
主页:http://202.101.111.1/123/
博客:http://iAMin.BlogDriver.com
Eclipse 插件之 Spring IDE
作者:俞黎敏 共 38 页,第 28 页
主页:http://202.101.111.1/123/
博客:http://iAMin.BlogDriver.com
Eclipse 插件之 Spring IDE
注意:
如果 bean 是定义在同一个文件里的可以用
<ref local="helloWorld2"></ref>
如果不是在同一个配置文件里的,要用
<ref bean="helloWorld2"></ref>
要不然会报到 bean 找不到!
作者:俞黎敏 共 38 页,第 29 页
主页:http://202.101.111.1/123/
博客:http://iAMin.BlogDriver.com
Eclipse 插件之 Spring IDE
这时 bean 里面简单的引用关系就表现出来了。
作者:俞黎敏 共 38 页,第 30 页
主页:http://202.101.111.1/123/
博客:http://iAMin.BlogDriver.com
Eclipse 插件之 Spring IDE
在 bean 图上右键,会打开三个操作菜单:
Open Java Type 即定位到 bean 的类文件上面;
Open Config File 即定位到 bean 的 xml 配置文件上面;
Show In Beans View 即定位到“Spring Beans”的视图里的具体某个节点上,如下所示。
作者:俞黎敏 共 38 页,第 31 页
主页:http://202.101.111.1/123/
博客:http://iAMin.BlogDriver.com
Eclipse 插件之 Spring IDE
作者:俞黎敏 共 38 页,第 32 页
主页:http://202.101.111.1/123/
博客:http://iAMin.BlogDriver.com
Eclipse 插件之 Spring IDE
作者:俞黎敏 共 38 页,第 33 页
主页:http://202.101.111.1/123/
博客:http://iAMin.BlogDriver.com
Eclipse 插件之 Spring IDE
XMLBuddy
由于打开 XML 文件时会根据 XML 文件里定义的 DTD 去网上查找相应的 DTD 文件,
这样导至打开的时候会相当慢,特别是如果你的机器上不了外网的话,就更慢了。
解决的办法有两个:
一、在本机开启 Web 服务(如 Tomcat 等等) ,并设置端口为 80,然后根据 DTD 的目
录结构建立相应的结构,并把 DTD 文件放进去。然后在 hosts 文件里把本机的地址映射到
相应的 DTD 指定的网站去,如:
127.0.0.1 www.springframework.org
这样打开 XML 文件时就会在本机寻找 DTD 文件进行验证,速度就快很多了☺
二 、 打 开 XMLBuddy 插 件 的 安 装 目 录 , 并 找 到 其 中 的 cache 目 录 , 比 如 :
%ECLIPSE_HOME%\PlugInsNew\xmlbuddy\eclipse\plugins\com.objfac.xmleditor_2.0.72\.cache
作者:俞黎敏 共 38 页,第 34 页
主页:http://202.101.111.1/123/
博客:http://iAMin.BlogDriver.com
Eclipse 插件之 Spring IDE
测试与运行
先建立一个 Log4J 的配置文件 log4j.properties,内容如下
# Set root logger level to ERROR and its only appender to R.
log4j.rootLogger = INFO,R
# R is set to be a DailyRollingFileAppender.
log4j.appender.R = org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File = Application.log
log4j.appender.R.DatePattern = yyyy-MM-dd'.log'
log4j.appender.R.layout = org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p]
%m%n
作者:俞黎敏 共 38 页,第 35 页
主页:http://202.101.111.1/123/
博客:http://iAMin.BlogDriver.com
Eclipse 插件之 Spring IDE
private ServiceFactory()
{
super();
}
作者:俞黎敏 共 38 页,第 36 页
主页:http://202.101.111.1/123/
博客:http://iAMin.BlogDriver.com
Eclipse 插件之 Spring IDE
import junit.framework.TestCase;
作者:俞黎敏 共 38 页,第 37 页
主页:http://202.101.111.1/123/
博客:http://iAMin.BlogDriver.com
Eclipse 插件之 Spring IDE
使用总结
此插件的功能不错:)对于 Spring 这样优雅的框架来说,再加上这个助手,真的是很美
很美了,美美地喝上一杯咖啡吧。☺
(^_^)
作者:俞黎敏 共 38 页,第 38 页
主页:http://202.101.111.1/123/
博客:http://iAMin.BlogDriver.com