弹簧型材的替代品

时间:2013-07-01 15:01:12

标签: spring

使用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,我可以使用哪种替代方法?

2 个答案:

答案 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。