Статьи

Поддержка JavaConfig в Spring Tool Suite

Мартин Липперт

Первоначально созданные Martin Lippert

Spring приложения, использующие JavaConfig вместо XML, становятся все более популярными. Сегодня мы хотели бы показать вам новые функции в последней версии Spring Tool Suite 3.3.0, которые упрощают программирование приложений Spring с использованием аннотаций и JavaConfig вместо XML.

Конфигурация проекта

Предположим, вы реализуете веб-приложение на основе Spring и JavaConfig. Обычной практикой будет иметь базовый класс @Configuration, в котором вы определяете общую базовую конфигурацию Spring в своем приложении. Это может выглядеть так:

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

	@Autowired
	private Environment env;

…

В дополнение к этому у вас может быть реализация веб-инициализатора для веб-приложения, которая определяет ваш общий базовый класс конфигурации как корневой конфиг, и еще один (может быть, внутренний класс этого веб-инициализатора) для конкретной конфигурации веб-приложения:

    @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 Tool Suite теперь предоставляет возможность настраивать эти классы @Configuration непосредственно в виде конфигураций Spring в настройках проекта:

Это точно так же, как для XML-файлов конфигурации Spring. Вы могли бы даже настроить оба для проекта, но это не кажется хорошим выбором дизайна. Если у вас есть XML-файлы в качестве точек входа в приложение Spring, которые используют элемент context: component-scan для учета классов @Configuration, вам также не нужно настраивать эти классы в настройках проекта. Они распознаются инструментом автоматически.

Настроив классы @Configuration в настройках проекта, вы можете просматривать модель Spring в проводнике Spring или в Project Explorer.

Bean Config Sets

Таким же образом, как вы конфигурируете свои конфигурации XML в наборы конфигураций bean-компонентов в инструменте (чтобы упорядочить их в значимый контекст для валидаций), вы можете также добавить классы JavaConfig в эти наборы конфигурации.

Это особенно полезно, если вы используете несколько профилей бина. В этом случае вы можете настроить набор настроек для каждого профиля, чтобы получать проверки для каждого профиля.

Настройки весеннего проекта стали проще

Начиная с версии 3.3.0, Spring Tool Suite предоставляет более простой способ настройки проектов Spring для поддержки инструмента. Существуют новые действия контекстного меню для определения классов @Configuration в настройках проекта, их повторного удаления и упорядочения в наборы конфигурации bean:

Validations

Инструментарий Spring выполняет множество проверок вашего кода Spring и ваших файлов конфигурации Spring в фоновом режиме как часть сборки проекта. Если у вас есть классы @Configuration, определенные в настройках вашего проекта, эти проверки также выполняются для этих конфигов. Это обеспечивает, например, проверку по аннотации @Autowired. Всякий раз, когда в вашем проекте не определен соответствующий компонент, который будет внедрен во время выполнения, инструмент помечает это как предупреждение.

Помощник по содержанию для весенних аннотаций

Несмотря на то, что Eclipse уже предоставляет хороший контент-помощник для многих ситуаций, он не знает о спецификациях аннотаций, которые вы используете для настройки Spring. Но мы делаем. Поэтому мы начали поддерживать аннотации для конкретных пружин с улучшенной поддержкой содержимого. В качестве отправной точки с этого момента вы получаете помощь по содержимому для имен типов и имен пакетов в аннотации @ComponentScan при определении базовых пакетов и / или атрибутов basePackageType.

Мы продолжим эту работу и добавим больше поддержки такого рода. Если вы хотите увидеть что-то конкретное, реализуемое в этой области, сообщите нам. Ваши отзывы приветствуются.

Навигация для @Autowired

Eclipse предоставляет хорошую функцию под названием гиперссылка. Он превращает имена классов и все виды элементов вашего Java-кода в гиперссылки, если вы удерживаете нажатой клавишу команды и наводите курсор на этот элемент. Мы улучшили эту быструю навигацию, чтобы обеспечить прямой доступ к внедренным bean-компонентам для полей и параметров @Autowired. Таким образом, вы можете напрямую перейти к определению bean-компонента, который вводится в эту цель @Autowired.

Что дальше

На данный момент вы должны определить классы @Configuration в настройках вашего проекта вручную. Это изменится в будущих версиях. Мы работаем над автоматизацией в этой области.
В дополнение к этому мы также рассмотрим расширенную поддержку аннотаций @ Enable…. Цель состоит в том, чтобы предоставить более подробную информацию о том, какие компоненты создаются из-за этих аннотаций.

Завершение

Spring Tool Suite 3.3.0 поддерживает проекты Spring на основе JavaConfig как первоклассный гражданин, и мы надеемся, что вам понравится. Если у вас есть какие-либо отзывы, пожалуйста, не стесняйтесь обращаться к нам
на форуме или подавать заявку (не только на ошибки, но и на запросы по улучшению) в нашу
JIRA для STS . Ваши отзывы всегда приветствуются и высоко ценятся. Наслаждайтесь новой версией Spring Tool Suite.