【Spring 源码学习】STS 功能介绍

886 阅读3分钟

「这是我参与11月更文挑战的第13天,活动详情查看:2021最后一次更文挑战」。


一,前言

“工欲善其事,必先利其器”,学习 Spring 源码也有一个好工具;
学习源码的设计思路及实现原理,一定要深入学习其中的类继承和接口实现的关系;
因此,简单介绍一下 Spring IDE - STS(全称:Spring-Tool-Suite)的使用;
本篇,重点介绍如何将 Spring 项目加入到 IDE 管理中,并查看类继承关系;
以便在日后的学习过程中,能够对 Spring 源码的继承结构有一个较为清晰的理解;

二,下载并安装 STS

两种下载方式:

  • 安装 Eclipse 对应版本的 STS 插件
  • 直接下载基于 Eclipse 的 STS IDE 安装程序

这里采用基于 Eclipse 的 STS IDE 安装程序进行安装

IDE下载网站:spring.io/tools/sts/a…

1,选择基于 Eclipse 的 STS 下载安装文件:

IDE

下载并安装后,启动 IDE:

启动IDE

  • 注意: 此时导入 Spring 工程会报错,原因是缺少 Eclipse 的 Groovy 插件;

2,安装 Eclipse 的 groovy

1)安装 groovy

Brave:~ Brave$ brew install groovy

查看版本号

Brave:~ Brave$ groovy -v
Groovy Version: 2.4.12 JVM: 1.8.0_51 Vendor: Oracle Corporation OS: Mac OS X

2)安装 eclipse-groovy 插件

在 eclipse 的 Help -> Install New Software 中,下载 groovy 插件;

注意 : Groovy 插件版本一定要和 Eclipse 版本相同,否则无效

STS 版本 3.9.2 基于 eclipse 4.7.2 版本,需下载对应版本的 groovy 插件(4.7版本)

4.7 版本 groovy 插件:
http://dist.springsource.org/release/GRECLIPSE/e4.7/

相关网站:


三,导入工程可能遇到的问题

1,Groovy编译版本问题

问题1

解决方式:修改 eclipse 配置中 groovy compiler 版本

问题2

转换后要求重启 eclipse,重启后问题解决;


四,将 Spring 项目加入 Spring IDE 管理

打开 Spring Explorer 视图:

Explorer

将 Spring 项目加入到 Spring IDE 中进行管理(将 spring-test 项目加入到管理)

add

添加完成后,项目图标会有一个 S 标识:

S

并且,项目会被添加在 Spring Explorer 视图:

视图

现在,成功将项目添加到 Spring IDE 中进行管理;

= 备注 要使用IDE工具完成 SpringBean 的管理,还需要在做一项准备工作:将项目中的XML配置文件加入到 Spring IDE 中;


五,将项目中的 XML 配置文件加入到 Spring IDE 中

在 Spring Explorer 中右键刚刚我们添加进来的项目,选择 properties:

properties

将 XML 添加到 Spring Explorer 项目中:

addXML

六,图形化展示依赖关系

以图形化方式展示 Bean 依赖关系:

图形化1

在 Bean 依赖图中,可以看到一系列 Bean 的依赖关系,为我们关系和设计 Bean 提供了很好的帮助;

图形化2


七,XML 与图形化对照

再引用 Spring Bean 中的一个 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"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
    <bean id="a" class="java.lang.Object" />
    <bean id="b" class="java.lang.Integer">
        <constructor-arg value="50" />
    </bean>
    <bean id="c" class="java.lang.String">
        <constructor-arg ref="b" />
    </bean>
    <bean id="int" class="java.lang.Integer">
        <constructor-arg ref="c" />
    </bean>
    <bean id="long" class="java.lang.Long">
        <constructor-arg ref="c" />
    </bean>
    <bean id="buffer" class="java.lang.StringBuffer">
        <constructor-arg ref="int" />
    </bean>
    <bean id="thread" class="java.lang.Thread"/>
    <bean id="field" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean">
      <property name="targetObject" ref="thread"/>
       <property name="targetField" value="MAX_PRIORITY"/>
    </bean>
    <bean id="secondBuffer" class="java.lang.StringBuffer">
        <constructor-arg ref="field"/>
    </bean>
</beans>

图形化展示依赖关系:

图形化3


八,导入 Spring 官方教程

STS 还有一个强大的功能:能够直接导入 Spring 官方提供的教程源码;

浏览并选择要导入的项目:

导入1

导入 Spring 官方提供的 Spring 工程 - 宠物医院:

导入2

可以选择项目和工程的构建类型 如 Maven、Gradle;


九,结尾

本篇仅提供了一个导入的演示,宠物医院项目由于没有 gradle 版本,所以不能导入;
后面我们还会讲一下这个宠物医院项目的的搭建;
它也是我们日后学习 Spring 源码索要用到的核心应用;