позволяет начать с кода:
@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 должны быть созданы экземпляром весной, иначе это не управляемый компонент. так можно ли воспроизвести управляемый компонент?
еще один вопрос: можно ли прикрепить бобы к контейнеру с зерном фасоли (чтобы весна могла его управлять)? как функция слияния в спящем режиме?
Вы хотите, чтобы ваш компонент Dashlet
был прототипом.
Затем вы можете получить новые экземпляры компонента, создав свой потребительский компонент ApplicationContextAware
а затем используйте applicationContext.getBean(..)
чтобы получить экземпляры bean-компонентов, когда это необходимо.
Другим способом достижения этой цели будет использование аннотации @Configuration
как описано здесь.
Если вы хотите подключиться к платформе Spring, вы можете использовать область прототипа:
Пример конфигурации xml:
<bean id="accountService" class="com.foo.DefaultAccountService" scope="prototype"/>
Пример конфигурации javaConf:
@Configuration
public class AppConfig {
@Bean
@Scope("prototype")
public Foo foo() {
return new Foo();
}
}