2

使用 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”,我可以使用“profiles”,但如果不使用 Spring 3,我可以使用什么替代方案?

4

2 回答 2

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.envproperty 是 JVM 系统属性,即配置为-Dmyapp.env=devor -Dmyapp.env=prodmyapp.env无法从属性占位符设置,因为 Spring在属性占位符之前<import>解析。

于 2013-07-01T21:11:47.757 回答
0

您需要自己构建这种东西。通常通过为每个配置文件维护多个不同的文件组合在一起,以及在运行时选择正确文件的约定。A -D 系统属性可以帮助你选择哪一个。比如我们可以有applicationContext-dev.xml和applicationContext-prod.xml,我们的applicationContext.xml会导入applicationContext-${activeProfile}.xml,你可以设置和加载-DactiveProfile=dev; 您可以从 Spring3 配置文件的设计方式中推断出其他一些约定,例如 web.xml 中的上下文参数等。

于 2013-07-01T21:15:09.317 回答