Spring IDE and the Spring Tool Suite - Using Spring in Eclipse
DZone is proud to present this complete overhaul and update of the most popular article ever written on Javalobby. Previously titled "Spring IDE - Using Spring in Eclipse," this article from 2008 is still one of the highest ranked pages on Google from DZone. Originally written by Javalobby Zone Leader, James Sugrue, this article has been mostly rewritten by Martin Lippert, a developer in the SpringSource tools division. Enjoy the 2014 version!
This article is an introduction to Spring IDE and the Spring Tool Suite – a set of plugins to simplify the development of Spring-based applications in Eclipse. Let’s start by looking at the Spring Framework and how we can use it to write a few simple Spring applications.
Spring in a Nutshell
For a concise introduction to Spring, read the reference documentation for Spring 4. It contains a nice introduction to the core concepts as well as a comprehensive overview and in-depth look at all of the various features that come with the latest version of the Spring core framework. In addition to the core framework, the Spring IO platform documentation gives you an additional overview about how to use both the execution layer and the foundation layer components to build modern enterprise applications.
In the simplest terms, Spring allows you to build an application using Plain Old Java Objects (POJO's) and dependency injection, which helps you wire up the different components of your application. Most people prefer to use annotations, or Java Configuration and therefore stay on the pure Java side. You can also use an XML configuration file to 'wire up' your POJOs that act as beans. All of these methods are perfectly fine and supported by Spring.
The components that you define, the Spring beans, can then reside in the Spring container. In addition to the pure dependency injection mechanism, Spring provides a first-class integration for aspect-oriented programming (AOP) and comes with a huge set of service-level abstractions. Those are ready-to-use bean implementations that encapsulate certain technologies like transactions, persistence technologies, and many more. All this results in a programming model that lets you write your application independent of a concrete technology or a concrete runtime environment for deployment. This is why, many years after its release, Spring probably the most popular framework and environment for implementing Java enterprise applications.
Spring IDE (Eclipse Plug-in)
The Spring IDE is an open-source project that provides a set of plugins for the Eclipse IDE. These plugins make the Eclipse IDE Spring-aware. After installing the Spring IDE plugins, your IDE understands your projects from the perspective of the Spring framework and provides you with a wide variety of additional features that make it easier and more convenient to work with Spring projects in Eclipse.
The IDE provides various wizards for creating Spring projects and getting started with Spring if you’re a beginner. Of course, it can also be used on existing Spring projects. Once you have a project configured to be a Spring project, you can let the IDE know which Spring configuration files your projects uses (either those XML config files or your Spring JavaConfig classes that use the @Configuration annotation). From there on, you can benefit from the Spring-specific tooling support, including:
- Spring-specific content-assist and validation for your spring config files
- Spring-specific refactoring support for your spring config files
- Graphical visualization of your beans and their dependencies
- Graphical diagram-like editors for Spring Integration, Spring Batch, and Spring Webflow
- Advanced support for Spring aspects including pointcut visualization and navigation
- Integration with AJDT and Eclipse Mylyn tooling
- Support for Spring bean profiles and validation inside profiles
- Direct integration of the ‘getting started’ guides from http://spring.io/guides
- A number of example and reference applications to learn from
- Support for creating and using Spring Boot projects right within your IDE
- and more…
The Spring Tool Suite (Full Distribution)
While the Spring IDE project provides a set of plugins for the Eclipse IDE, the Spring Tool Suite comes as a ready-to-use distribution of the latest Eclipse releases with the Spring IDE components pre-installed. This includes the tc Server integration for Eclipse (another IDE extension that is provided by Pivotal as an open-source project) and various other additions to Eclipse that turn the pure Eclipse IDE into a ready-to-use, best-of-breed environment for enterprise Spring application development. To download the Spring Tool Suite, go to: http://spring.io/tools
Lets get Started - Installing the Spring Tooling
There are two ways to get Spring-tooling enabled in Eclipse: Either you download the Spring Tool Suite distribution as a ready-to-use package (recommended) or you download the latest Eclipse JEE package from http://www.eclipse.org/ and start from there. You might also have an existing Eclipse IDE running on your machine that you just want to extend with the Spring tooling. The easiest way to install the Spring tooling into your existing (or freshly downloaded) Eclipse IDE is to go the Eclipse Marketplace and search for the “Spring Tool Suite” - and install from there.
If you would like to use Maven (which is used in many Spring projects) and you haven’t installed the Maven Integration for Eclipse yet, you should go ahead and do that. You can grab it from the Eclipse Marketplace or directly from the main Eclipse update repository, which is pre-configured in your Eclipse IDE. Just look for the “Install New Software” wizard. It is also recommended that you install the Maven Integration for Eclipse WTP, which makes it easy to work with web projects using Maven inside Eclipse. If you decided to download the Spring Tool Suite distribution package, those extensions are already pre-installed for you.
Create a New Project
To create a new project, you just need to use the New Spring Project wizard to get going. If you don't do this, it's ok – you can just add a "Spring Nature" to your project at a later stage.
The wizard provides you with a few options for getting started with a new Spring project. For some of the common use cases, the Spring tooling provides a number of templates, like a simple Spring MVC application or some examples for using Spring Integration, just to name a few. After giving the project a name and selecting the template, the wizard usually allows you to customize a few settings in the project (like the package names). Once that’s done, you are ready to go. This is an easy way to get started with a ready-to-use Spring project that already runs and does something for you.
The simple Spring MVC project example is a very popular one that gets you started with a more classic Spring web application, which includes:
- Traditional Spring XML configurations for the web application
- Component scanning for the controller implementations that use the @RequestMapping annotation in the source code
- A traditional JSP page for the frontend, which is probably similar to the structure of many existing Spring web applications
If you are using the Spring Tool Suite distribution, you get a ready-to-use tc Server instance created and configured in your workspace. It allows you, for example, to deploy and run your freshly created Spring MVC app immediately.
If you would like to start with an empty project instead, you can do that, of course. For this case, there are a few simple templates provided by the wizard that help you do that. If you choose to use Maven for your project build and dependency management, you could choose the simple Maven web template. It doesn’t create any code for you, but it puts all the necessary Spring libraries on the classpath of the project.
If you started with the Spring MVC web application example, some of the features of the Spring tooling will immediately catch your eye. The project explorer gets a new section “Spring”, that shows you the structure and the beans of your Spring applications. Furthermore, it gives you an overview of the annotation-based stereotypes used within your project. In web applications, for example, it gives you a nice overview of the defined @RequestMapping methods with the ability to jump right into the code.
Next Page: Using Spring Boot and the new Getting Started Guides