来自数据库的弹簧配置
你不能有零XML配置的(除非您使用JavaConfig,不使事情你的情况不同)。您可以将其部分外部化到数据库,并使用自定义PropertyPlaceholderConfigurer
。有关如何实现此目的,请参见this article。
@ Bozho的建议几乎肯定是最实际的解决方案,特别是如果部署之间的差异很小并且可以通过简单的标量属性表示。
另一种方法是编写自己的BeanFactory
实现。这是一个不平凡的练习,你想确定它是你需要的。一个好的起点是查看XmlBeanFactory
的源代码,然后编写自己的(DatabaseBeanFactory
,也许),它做了类似的事情,但从数据库中获取bean定义,而不是从本地XML文件中获取。
虽然这将是相当多的额外工作。
有一些选择这比skaffman的建议simplier:
如果您的配置存储在XML格式的数据库,可以实现自定义资源通过重写
AbstractApplicationContext.getResource()
抓取策略,这样就可以从数据库加载XML配置。有关示例代码,请参阅here。使用这种方法,您还可以即时生成XML配置。-
如果您的配置保存在“分解”的形式,你可以建立
BeanDefinition
S和使用下列方法之一上下文的初始化时将它们添加到BeanDefinitionRegistry
:- 实现一个namespace extension
- 实现一个
BeanFactoryPostProcessor
(您需要垂头丧气ConfigurableListableBeanFactory
到BeanDefinitionRegistry
,这对于大多数的应用程序上下文工种) - 由于春节3.0.1以前的方法是由INTR整流的
BeanDefinitionRegistryPostProcessor
oduction在Web应用程序的情况下:用于填充属性实例与应用程序启动的数据库值,并将其传递到Spring的PropertyPlaceholderConfigurer
编写自定义的ServletContextListener实现。看到这个职位的完整工作示例:http://blog.javaforge.net/post/31720600427/configuring-spring-based-web-application-from-database
是否要保留连接到数据库中的数据库的bean配置...? – 2010-10-12 10:26:20