You are on page 1of 38

Eclipse 插件之 Spring IDE

Eclipse 插件之 Spring IDE

本文介绍如何利用 Eclipse 插件 Spring IDE 在 Eclipse 中的使用。

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/ 上去下载

Spring IDE 1.3.2 Update 地址为:http://springide.org/updatesite/

作者:俞黎敏 共 38 页,第 2 页
主页:http://202.101.111.1/123/
博客:http://iAMin.BlogDriver.com
Eclipse 插件之 Spring IDE

管理技巧
Eclipse 使用技巧之插件管理

提示:新下载的插件 PlugIn 一定不要都放在原始的 Eclipse 目录下去,一大堆,累死你:(

1、 前提是你已经下载解压并设置好 Eclipse 工具,比如解压在 E:\OpenSource\Eclipse\目录


下,以下这个目录以%ECLIPSE_HOME%来进行表示;
2、 此时默认的插件是在%ECLIPSE_HOME%\plugins 目录中的;
3、 在%ECLIPSE_HOME%下建立一个 PlugInsNew 的目录;
比如:E:\OpenSource\Eclipse\PlugInsNew
4、 如果你下载了一个新的插件,比如叫做:XYZ
那么就在%ECLIPSE_HOME%\PlugInsNew\目录下建立 XYZ 目录,目录里面是 eclipse
目录,eclipse 目录包含有 features 与 plugins 两个子目录;结构如下图所示:

作者:俞黎敏 共 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 使用技巧之插件管理》。

Spring 1.2 系列当前最新的稳定版本为 1.2.8,下载时可以选择包含 Spring 所依赖的


一些开源包的文件 spring-framework-1.2.8-with-dependencies.zip,如果你已经清楚并
有了 Spring 所依赖的相关开源包,就单独下载 spring-framework-1.2.8.zip 即可。建议下
载前者。

解压后目录结构及包的说明如下:

dist 目录下是 Spring 的发布包,关于发布包下面会详细进行说明;


docs 目录下是相关的文档,包括有 Spring api 的 javadoc、reference 参考指南、Spring
的 taglib 标签使用文件及 Spring MVC 的 MVC-step-by-step 讲解与示例;
lib 目录下是 Spring 所依赖的第三方开源包;
mock 目录下是 Spring 辅助应用测试的 Mock 源程序;
samples 目录下是 Spring 的示例源程序及简单的 webapp 示例框架的示例配置,值得好
好学习的有 jpetstore 及 petclinic,当然其它的 countries、imagedb、tiles-example 也
作者:俞黎敏 共 38 页,第 6 页
主页:http://202.101.111.1/123/
博客:http://iAMin.BlogDriver.com
Eclipse 插件之 Spring IDE

可以好好参考一下;
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.jar 是包含有完整发布的单个 jar 包,spring.jar 中除了 spring-mock.jar 里所包含的


内容外其它所有 jar 包的内容,因为只有在开发环境下才会用到 spring-mock.jar 来进行辅助
测试,正式应用系统中是用不得这些类的。

除了 spring.jar 文件,Spring 还包括有其它 13 个独立的 jar 包,各自包含着对应的 Spring


组件,用户可以根据自己的需要来选择组合自己的 jar 包,而不必引入整个 spring.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();
}

public String sayHelloWorld()


{
return "Hello World HelloWorld1";
}
}
实现类二:HelloWorld2.java
public class HelloWorld2 implements IHelloWorld
{
public HelloWorld2()
{
super();
}

public String sayHelloWorld()


{
return "Hello World HelloWorld2";
}
}
作者:俞黎敏 共 38 页,第 11 页
主页:http://202.101.111.1/123/
博客:http://iAMin.BlogDriver.com
Eclipse 插件之 Spring IDE

根据常用的三层与 Spring 的最佳实践,将配置文件分成了四个


beanRefFactory.xml 负责总装,由 SingletonBeanFactoryLocator 来装入
通过 ClassPathXmlApplicationContext 来把其它三个模块的文件引入
beanRefDataAccess.xml 负责 DAO,与数据库相关的 bean 都定义在这里
beanRefService.xml 负责 Service 层的 bean 定义
beanRefMVC.xml 负责 Spring MVC 方面相关的 bean 定义等等

以下配置文件的 bean 定义为演示所用,各自的内容如下:

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

右键项目工程:可以看到“Add Spring Project Nature”菜单,单击它

作者:俞黎敏 共 38 页,第 14 页
主页:http://202.101.111.1/123/
博客:http://iAMin.BlogDriver.com
Eclipse 插件之 Spring IDE

细心的你一定可以看到项目工程 SpringIDEDemo 前面的图标变成了一个 S 的标志,而


不是原来的 J,当然项目里与 Spring 相关的文件都会在图标上显示一个 S 标志。☺

右键弹出的菜单里就会有个“Remove Spring Project Nature”的菜单了。

你选择这个菜单进行移除后就不能进行以下的相关操作了。☺

作者:俞黎敏 共 38 页,第 15 页
主页:http://202.101.111.1/123/
博客:http://iAMin.BlogDriver.com
Eclipse 插件之 Spring IDE

Window Show View Other… 可以看到 Spring IDE,打开它,如下所示,所中


它并确定。

可以看到如下的视图,右键工程的名称,在弹出的 Properties 菜单上点击它

作者:俞黎敏 共 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

在 Spring Beans 视图里展开工程后,便可以看到增加进来的四个配置文件了。

作者:俞黎敏 共 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

这样确定以后,可以看到四个文件都属于 Service 的节点下面,如下所示。

作者:俞黎敏 共 38 页,第 21 页
主页:http://202.101.111.1/123/
博客:http://iAMin.BlogDriver.com
Eclipse 插件之 Spring IDE

再次确定后,在 Spring Beans 视图里看到 Service 节点,展开它,可以看到所有配置文


件里的 bean 都在这里列出来了。

作者:俞黎敏 共 38 页,第 22 页
主页:http://202.101.111.1/123/
博客:http://iAMin.BlogDriver.com
Eclipse 插件之 Spring IDE

展开显示两个定义的 bean 结点,右键其中的一个结点,弹出四个菜点,最后一个就是


上面的配置菜单,不再讲解了,我们选中“Open Config File”菜单

于是就会自动打开配置文件,并定位到 bean 的定义位置上面去了,如下所示,方便进


行查看与改动。

作者:俞黎敏 共 38 页,第 23 页
主页:http://202.101.111.1/123/
博客:http://iAMin.BlogDriver.com
Eclipse 插件之 Spring IDE

在右键弹出的菜单点选中“Open Bean Class”,

就会自动定位到对应的类文件里去了,如下所示。

作者:俞黎敏 共 38 页,第 24 页
主页:http://202.101.111.1/123/
博客:http://iAMin.BlogDriver.com
Eclipse 插件之 Spring IDE

在右键弹出的菜单点选中“Show Graph”,

就会把当前这个 bean 以图形的方式显示出来,如下所示。

但是这个演示的文件仅是一个独立的 bean,没有任何关联等,下面会演示关联等。

作者:俞黎敏 共 38 页,第 25 页
主页:http://202.101.111.1/123/
博客:http://iAMin.BlogDriver.com
Eclipse 插件之 Spring IDE

在 Spring Beans 视图里展开工程后,选中 src/beanRefSerice.xml 配置文件,在右键弹出


的菜单点选中“Show Graph”

就会把当前整个配置文件的内容以 bean 图形的方式显示出来,如下所示。

作者:俞黎敏 共 38 页,第 26 页
主页:http://202.101.111.1/123/
博客:http://iAMin.BlogDriver.com
Eclipse 插件之 Spring IDE

以下演示 bean 的引用及构造注入与 setter 注入何关联等,更多的操作类似了。

定义一个接口类 ISpringDemo.java,有两个方法

public interface ISpringDemo


{
IHelloWorld getHelloWorld();
String getHello();
}

实现类一 SpringDemoConstructor.java,含有构造注入及 setter 注入

public class SpringDemoConstructor implements ISpringDemo


{
private String hello;
private IHelloWorld helloWorld;

public SpringDemoConstructor(String hello)


{
this.hello = hello;
}

public String getHello()


{
return hello;
}

public IHelloWorld getHelloWorld()


{
return helloWorld;
}

public void setHelloWorld(IHelloWorld helloWorld)


{
this.helloWorld = helloWorld;
}
}

作者:俞黎敏 共 38 页,第 27 页
主页:http://202.101.111.1/123/
博客:http://iAMin.BlogDriver.com
Eclipse 插件之 Spring IDE

实现类二 SpringDemoSetter.java,都是 setter 注入

public class SpringDemoSetter implements ISpringDemo


{
private String hello;
private IHelloWorld helloWorld;

public String getHello()


{
return hello;
}

public void setHello(String hello)


{
this.hello = hello;
}

public IHelloWorld getHelloWorld()


{
return helloWorld;
}

public void setHelloWorld(IHelloWorld helloWorld)


{
this.helloWorld = helloWorld;
}
}

作者:俞黎敏 共 38 页,第 28 页
主页:http://202.101.111.1/123/
博客:http://iAMin.BlogDriver.com
Eclipse 插件之 Spring IDE

配置文件 beanRefService.xml 增加 bean 定义,成为如下,红字为新增的


<?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>

注意:
如果 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

这样配置完成后,我们切换到“Spring Beans”视图,在 beanRefService.xml 节点上右键


打开“Show Graph”菜单,可以看到如下所示:

这时 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

此时我们可以在配置集合的 Service 节点上面右键,选择“Show Graph”

这样就会显示出所有的配置文件集合里的所有 bean 文件及其关联引用情况,如下图。

带圈的 P 图标表示是属性,即 setter 方法注入,带圈的 C 图标表示构造注入。箭头表示


引用关系了。☺
中间一排演示用的四个 bean 没有关联引入,就光杆司令地在那里排队了啦☺
最下面的带圈的 C 后面又跟着一大排参数,表示集合类型的了。如 list

作者:俞黎敏 共 38 页,第 32 页
主页:http://202.101.111.1/123/
博客:http://iAMin.BlogDriver.com
Eclipse 插件之 Spring IDE

Spring IDE 提供错误检查功能,比如我在配置文件中输入一个不存在的类的名称,保存


后,就会在边上出现红色提示,鼠标移上去就会出现提示信息,如下图所示。

当然也会有 Problems 视图里显示相应的错误信息,如下图:

作者:俞黎敏 共 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

打开 meta.xml 文件,一看就知道怎么处理了吧,如法炮制,选把 DTD 文件拷贝到这个


cache 目录里,再增加内容到 meta.xml 里来,比如:
<file>
<pub>-//SPRING//DTD BEAN//EN</pub>
<abs>http://www.springframework.org/dtd/spring-beans.dtd</abs>
<rel>spring-beans.dtd</rel>
</file>

要增加其它的 DTD 文件方法类似,不断地增加说明与 DTD 文件即可。

于是在编辑 XML 文件时就会有相关的提示及错误提示信息,可以减少一些书写 XML


文件时发生的低级错误了。

作者:俞黎敏 共 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

再创建一个 ServiceFactory.java 静态类,用来做单元测试方便一些


import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.access.BeanFactoryLocator;
import org.springframework.beans.factory.access.BeanFactoryReference;
import org.springframework.beans.factory.access.SingletonBeanFactoryLocator;

public final class ServiceFactory


{
private static BeanFactoryLocator bfLocator = null;
private static BeanFactoryReference bfReference = null;
private static BeanFactory factory = null;
static
{
bfLocator = SingletonBeanFactoryLocator.getInstance();
bfReference = bfLocator.useBeanFactory("beanFactory");
factory = bfReference.getFactory();
}

private ServiceFactory()
{
super();
}

public static Object getBeanByName(final String beanName)


{
return factory.getBean(beanName);
}
}

做成静态的这样我们可以 ServiceFactory .getBeanByName(“beanname”)就可以得到相应


的 bean 了。

作者:俞黎敏 共 38 页,第 36 页
主页:http://202.101.111.1/123/
博客:http://iAMin.BlogDriver.com
Eclipse 插件之 Spring IDE

测试类 SpringIDETest.java 代码如下:

import junit.framework.TestCase;

public class SpringIDETest extends TestCase


{
private IHelloWorld helloWorld = null;
private ISpringDemo springDemo = null;
private final static String hello1 = "Hello World HelloWorld1";
private final static String hello2 = "Hello World HelloWorld2";
private final static String helloset = "Spring IDE Setter";
private final static String hellocon = "Spring IDE Constructor";

public void testSpringBeans()


{
helloWorld = (IHelloWorld)ServiceFactory.getBeanByName("helloWorld1");
assertEquals(hello1,helloWorld.sayHelloWorld());
helloWorld = (IHelloWorld)ServiceFactory.getBeanByName("helloWorld2");
assertEquals(hello2,helloWorld.sayHelloWorld());
}
public void testIoCConstructor()
{
//Constructor
springDemo =
(ISpringDemo)ServiceFactory.getBeanByName("springDemoConstructor");
assertEquals(hellocon,springDemo.getHello());
assertEquals(hello1,springDemo.getHelloWorld().sayHelloWorld());
}
public void testIoCSetter()
{
//Setter
springDemo =
(ISpringDemo)ServiceFactory.getBeanByName("springDemoSetter");
assertEquals(helloset,springDemo.getHello());
assertEquals(hello2,springDemo.getHelloWorld().sayHelloWorld());
}
}

Run As JUnit Test 之,绿色打勾全部通过就收工走人了。。。☺


当然也可以打开 Application.log 文件查看输出一些什么信息。

作者:俞黎敏 共 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

You might also like