让我们从代码开始:
@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;
}
如您所知,上述方法无法正常工作,因为托管bean应该由spring实例化,否则它不是托管bean。那么可以重现托管bean吗?
还有一个问题,是否可以将e bean连接到spring bean容器(以便spring可以管理它)?喜欢hibernate中的合并功能吗?
答案 0 :(得分:1)
如果要附加到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();
}
}
答案 1 :(得分:0)
您希望您的Dashlet
bean成为原型范围。
然后,您可以通过创建使用者bean ApplicationContextAware
来获取bean的新实例,然后在需要时使用applicationContext.getBean(..)
来获取bean实例。
实现此目标的另一种方法是使用here所述的@Configuration
注释。