Spring工具套件中的JavaConfig支持


Martin Lippert

最初作者是马丁·李伯特

使用JavaConfig代替XML的Spring应用程序变得越来越流行。今天,我们将向您展示最新的Spring Tool Suite 3.3.0版本中的新特性,这些特性使您能够更容易地使用注释和JavaConfig而不是XML来编写Spring应用程序。

项目配置

让我们假设您实现了一个基于Spring和JavaConfig的网络应用程序。一个常见的做法是拥有一个基本的@Configuration类,在这个类中,您可以在应用程序中定义通用的基本Spring配置。可能是这样的:

@Configuration
@ComponentScan(basePackages = "org.springsource.restbucks", includeFilters = @Filter(Service.class), useDefaultFilters = false)
class ApplicationConfig {

	@Autowired
	private Environment env;

…

除此之外,您可能有一个web应用程序的web初始值设定项实现,它将您的公共基本配置类定义为根配置,还有一个(可能是此web初始值设定项的内部类)用于web应用程序特定的配置:

    @Configuration
    @Import(RepositoryRestMvcConfiguration.class)
    @ComponentScan(basePackages = "org.springsource.restbucks", excludeFilters = @Filter({ Service.class, Configuration.class }))
    public static class WebConfiguration extends WebMvcConfigurationSupport {
 
        @Autowired
        Repositories repositories;
 
        @Bean
        public DomainClassConverter domainClassConverter() {
            return new DomainClassConverter<>(mvcConversionService());
        }
...

Spring工具套件现在提供了将这些@Configuration类直接配置为项目首选项中的Spring配置的选项:

这与基于XML的Spring配置文件完全相同。您甚至可以为一个项目配置两者,但这似乎不是一个好的设计选择。如果您将XML文件作为Spring应用程序的入口点,使用上下文:组件扫描元素来考虑@Configuration类,那么您也不需要在项目设置中配置这些类。它们被工具自动识别。

在项目设置中配置了@Configuration类后,您可以在Spring资源管理器或项目资源管理器中浏览Spring模型。

Bean配置集

同样,您可以将您的XML配置安排到工具中的bean配置集中(将它们安排到一个有意义的上下文中进行验证),您也可以选择向这些配置集中添加JavaConfig类。

如果您使用多个bean配置文件,这将非常有用。在这种情况下,您可以为每个概要文件配置一个配置集,以获得每个概要文件的验证。

Spring项目设置变得简单

自3.3.0版以来,Spring工具套件提供了一种更简单的方法来为工具支持配置您的Spring项目。有新的上下文菜单操作来定义项目设置中的@Configuration类,再次删除它们,并将它们排列到bean配置集中:

验证

作为项目构建的一部分,Spring工具在后台对您的Spring代码和Spring配置文件进行了大量的验证。如果您在项目设置中定义了@Configuration类,那么这些验证也将针对这些配置运行。例如,这为您提供了针对@Autowired注释的验证。每当您的项目中没有定义匹配的bean在运行时被注入时,工具会将此标记为警告。

春季注释的内容辅助

虽然Eclipse已经为许多情况提供了很好的内容辅助,但是它不知道您用来配置Spring的注释的细节。但我们有。因此,我们开始通过改进的内容辅助来支持特定于spring的注释。作为起点,从现在开始,在定义基本包和/或基本包类型属性时,您可以在@ComponentScan注释中获得类型名称和包名称的内容帮助。

我们将继续这项工作,并增加更多这类支持。如果您希望在这方面看到具体的实施,请告诉我们。欢迎您的反馈。

@Autowired的导航

Eclipse提供了一个很好的叫做超链接的特性。如果您按住command键并将鼠标悬停在元素上,它会将类名和Java代码的所有元素转换为超链接。我们增强了这种快速导航,为@Autowired字段和参数提供了对注入beans的直接访问。这样,您可以直接跳转到注入这个@Autowired目标的bean的bean定义。

下一步是什么

目前,您必须在项目设置中手动定义@Configuration类。这将在未来的版本中改变。我们正在这个领域致力于自动化。
除此之外,我们还研究了对@Enable…注释的高级支持。目标是提供更多关于由于这些注释而创建的beans的详细信息。

包扎

Spring工具套件3.3.0支持基于JavaConfig的Spring项目,是一流的公民,我们希望您喜欢它。如果您有任何反馈,请随时联系我们at the forum或者在我们的JIRA for STS。您的反馈总是非常受欢迎和高度赞赏。享受新版本的弹簧工具套件。