使用spring 3我可以确定在运行时使用哪个bean。但是使用Spring 2.5有什么替代方案?
以下是我的上下文文件中的配置:
<jee:jndi-lookup id="myDataSource" jndi-name="jdbc/mydb"
resource-ref="true" expected-type="javax.sql.DataSource" />
我可以使用配置文件来确定是否使用此数据源,使用早期版本的spring(早于Spring 3)时的替代方法是什么
更新:
当我在本地运行我的应用程序时,将注入“myDataSource”,在prod环境中将使用“jndi”查找。要使用Spring 3注入“myDataSource”,我可以使用“配置文件”,但如果不使用Spring 3,我可以使用哪种替代方法?答案 0 :(得分:3)
您可以将所有环境依赖bean定义为多个文件,例如:
beans-dev.xml
beans-prod.xml
您的XML配置将是:
<beans>
<import resource="beans-${myapp.env}.xml"/>
<bean id="bean1" class="..."/>
<bean id="bean2" class="..."/>
</beans>
在这种情况下,myapp.env
属性是JVM系统属性,即配置为-Dmyapp.env=dev
或-Dmyapp.env=prod
。由于Spring myapp.env
在属性占位符之前已解析,因此无法从属性占位符设置<import>
。
答案 1 :(得分:0)
你需要自己构建这种东西。通常,为每个组合在一起的组件维护许多不同的文件,以及在运行时选择正确文件的约定。 A -D系统属性可以帮助您选择哪一个。例如,我们可以有applicationContext-dev.xml和applicationContext-prod.xml,我们的applicationContext.xml将导入applicationContext - $ {activeProfile} .xml,你可以设置并加载-DactiveProfile = dev;你可以从设计Spring3配置文件的方式推断web.xml等中的一些其他约定,例如context-param。