Spring IDE and the Spring Tool Suite - Using Spring in Eclipse
Using Spring Boot and the new Getting Started Guides
If you’ve seen the new Spring Boot project, then you know how easy it is to get started with Spring using Spring Boot. There is a direct integration for that in the tooling starting in version 3.4.0. You can go ahead and create a new Spring Boot project by selecting the “New -> Spring Started Project”. It will open a simple wizard for you that lets you choose among various options for what to get on the classpath of the new Spring project and it creates a simple main Application class that you could use to startup the application.
Since Spring Boot takes care of starting up an embedded Tomcat instance, you don’t have to deploy your application to a server that you configured inside your IDE anymore. Simply starting the project as a general Java application will work just fine.
In addition to using the very basic (and purist) Spring Boot approach, you could also use the new Getting Started Guides (http://spring.io/guides) directly from within the tooling. To do that, you select the “New -> Import Spring Getting Started Content” wizard and go from there. It lists all the available guides that you can find on the http://spring.io website and lets you import them into your IDE quickly (alongside the documentation inside the IDE using a browser view). This provides you with a nice learning experience when getting started with Spring in general or when diving into certain features of Spring.
Configuring an Existing Project
If you are already a Spring developer and want to benefit from the Spring tooling in your IDE, you will want to enable the tooling for any existing projects in your workspace. Just select your project, open the context menu, and select “Spring Tools -> Add Spring Project Nature”. Once you’ve done that, the IDE treats this project as a Spring project and enables all the Spring-related features for it.
Once the project in Eclipse or the Spring Tool Suite has the Spring nature enabled, you can go ahead and configure the used Spring bean config files. To do that you just go to the project preferences and select “Spring -> Beans Support”.
There you can configure the Spring config files (either the Spring XML config files or the @Configuration classes if you are using the pure annotation-based method). This lets the tooling know about your config files and tells the tools where to start the Spring-specific analysis of your project.
Some of those config files are recognized and configured automatically, since the tooling knows about the usual names and the usual locations for those files (especially for web apps). If they are not showing up automatically, please go ahead and configure them manually (and probably file a bug with the Spring IDE developers to let them improve the automatic discovery of those config files).
Working with the Spring Tooling
The tooling is what makes working with Spring in Eclipse a real pleasure. The Spring explorer view and the corresponding section of the project explorer give you a nice overview of your Spring project, and every time you change your code or your config files, it gets updated. It allows you to quickly navigate to the source code and helps you quickly understand the structure of your Spring project.
The most valuable aspect of the tooling is the support for editing and validating Spring configurations. It doesn’t matter if you use Spring XML config files or if you prefer the annotation-based configuration style. The tooling gives you meaningful content-assist all over the place and assists you with additional, Spring-specific validations that help you identify problems, typos, and other issues as early as possible.
The most comprehensive support is available for working with Spring XML config files. When defining Spring beans in the XML config files, you get content-assist for all kinds of elements, including full assist for typing in the class of a bean, referring to other bean definitions, or referring to a class property in order to inject dependencies.
If a problem appears, the tooling assists you in fixing this problem by providing quick-fix solutions. That makes it easy to add, for example, a missing bean definition or to create a new property in the related Java class, if the config file refers to a missing property.
Validations take care of checking your Spring config files and they make sure that you don’t forget a bean definition. They also points you toward the better options for writing your Spring configs if it detects a common anti-pattern. This is extremely useful for autowired dependencies where you don’t know right away what gets injected at runtime, or whether something exists at runtime that will be injected into an @Autowired field or parameter. The tooling can check this for you and give you a warning if it cannot find anything that could get injected there.
A list of the available validations can be found in the global preferences via “Preferences -> Spring -> Project Validators”. That preference page allows you to enable or disable those validations as well.
Improving the structure of your code is always on your mind if you’re a professional developer, and today’s IDE provide nice refactoring support for these tasks. The Spring tooling, for example, integrates the Spring-specific configuration files into this refactoring support of your IDE. Whenever you rename a class in Eclipse, it gets updated in your Spring config files as well. The same happens if you change the name of a property in your Java class. If there is a reference to this property in one of your Spring config files, it gets updated as well. In addition to that, it also allows you to rename beans themselves via a special “Rename Bean ID” refactoring, changing all references to that bean ID automatically.
This article covers only the basic features and first steps for getting started with the Spring tooling for Eclipse. The tooling provides a lot more functionality than what is mentioned in this article. The graphical views and editors are especially powerful when working with Spring Integration, Spring Batch, and Spring Webflow. And there is more and more support emerging for annotation-based Spring configurations, although the general Java tooling in Eclipse is already extremely useful and supportive for those out-of-the-box.
If you want to learn more about the tooling and see what is new in the latest versions, please take a look at the new and noteworthy documentation that comes with every release:
More information can be found here: