Как создать несколько экземпляров Spring Named Bean?

1

позволяет начать с кода:

@Named
public class Dashlet implements GlobalDashlet {
    private DashletContent dashletContent;
    //OTHER STUFF
}

Как я могу создать другой экземпляр класса Dashlet? например, у меня есть метод в этом классе, например:

public GlobalDashlet getInstance(DashletContent content) {
        Dashlet dashlet =  new Dashlet();
        dashlet.setDashletContent(dashletContent);
    return dashlet;
}

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

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

  • 0
    Используйте область действия прототипа, если вы ищете несколько экземпляров компонента.
  • 0
    благодарю вас . мне нужно создать несколько экземпляров по требованию
Показать ещё 6 комментариев
Теги:
spring
dependency-injection

2 ответа

0
Лучший ответ

Вы хотите, чтобы ваш компонент Dashlet был прототипом.

Затем вы можете получить новые экземпляры компонента, создав свой потребительский компонент ApplicationContextAware а затем используйте applicationContext.getBean(..) чтобы получить экземпляры bean-компонентов, когда это необходимо.

Другим способом достижения этой цели будет использование аннотации @Configuration как описано здесь.

  • 0
    Спасибо за ответ. позвольте мне проверить и вернуться
1

Если вы хотите подключиться к платформе Spring, вы можете использовать область прототипа:

http://docs.spring.io/spring/docs/current/spring-framework-reference/html/beans.html#beans-factory-scopes-prototype

Пример конфигурации xml:

<bean id="accountService" class="com.foo.DefaultAccountService" scope="prototype"/>

Пример конфигурации javaConf:

@Configuration
public class AppConfig {
   @Bean
   @Scope("prototype")
   public Foo foo() {
      return new Foo();
   }
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню