在Spring中有没有什么方法可以专门加载一个bean。
我有一个包含很多bean的appContext文件。当使用以下代码加载它时,它会再次加载所有bean。
BeanFactory factory = new ClassPathXmlApplicationContext("appContext.xml");发布于 2011-08-15 18:32:05
使用ApplicationContextAware怎么样?
Bean映射
<bean id="springApplicationContext" class="SpringApplicationContext"/>
Java实现
public class SpringApplicationContext implements ApplicationContextAware {
private static ApplicationContext CONTEXT;
public void setApplicationContext(ApplicationContext ctx) throws BeansException {
CONTEXT = ctx;
}
public static Object getBean(String name) {
return CONTEXT.getBean(name);
}
}然后像这样使用它;
SpringApplicationContext.getBean("myBean");
发布于 2011-08-15 18:29:51
默认情况下,spring在启动时创建所有singleton-scoped beans的实例。
我建议您将spring配置拆分到几个不同的文件中。在这种情况下,您将只能加载任务所需的那组bean。
另一种方法是使用default-lazy-init属性声明beans:
<beans default-lazy-init="true">
<!-- no beans will be pre-instantiated... -->
</beans>发布于 2011-08-15 18:32:06
您可以使用ApplicationContextAware接口。example
当你得到这个bean的实例时,你可以加载任何你想要的bean。
https://stackoverflow.com/questions/7063821
复制相似问题