Абстрактный bean в Spring с помощью java configuration

Рейтинг: 1Ответов: 1Опубликовано: 16.02.2015

В книге Spring in Action есть пример, в котором спринг может управлять бином, созданном с помощью конструктора. Он выглядит так:

<bean id="pianist" class="com.springinaction.springidol.Instrumentalist" abstract="true">
  <property name="song" value="Chopsticks" />
  <property name="instrument">
      <bean class="com.springinaction.springidol.Piano" />
  </property>
</bean>

В то же время, в современных версиях Spring можно использовать Java для конфигурации. Что-то типа того:

@Configuration
@EnableAutoConfiguration
@PropertySource("application.properties")
public class MainConfig
{
    @Bean
    public Instrumentalist Instrumentalist()
    {
        // внедрение
    }
}

Можно ли с помощью аннотаций пометить бин как абстрактный, т.е. чтобы зависимости внедрялись в экземпляр класса, созданный конструктором в коде, а не Spring'ом? На офиц. сайтах почему-то отсутствуют упоминания о таком

Ответы

▲ 4Принят

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