2013-07-01 159 views
0

使用弹簧3我可以确定在运行时使用哪个bean。但是使用Spring 2.5有什么选择?弹簧配置文件的替代

这里是我的背景文件中的配置:

<jee:jndi-lookup id="myDataSource" jndi-name="jdbc/mydb" 
     resource-ref="true" expected-type="javax.sql.DataSource" /> 

我可以用一个配置文件,以确定是否要使用此数据源,利用弹簧的早期版本(早于春天的时候什么是另类3)

更新:

“myDataSource”当我在本地运行我的应用程序,在PROD环境的“JNDI”查询将被注入,将被使用。要使用Spring 3注入“myDataSource”,我可以使用“profiles”,但是如果不使用Spring 3,我可以使用哪种方法?

+0

1)但我期望某些bean会有“myDataSource”受到伤害。那么你真的想在某些情况下“删除”“myDataSource”bean,或者只是有其他配置吗? 2)这是其他配置的测试环境吗? – Ralph

+0

@Ralph请参阅问题更新,我只是想要注入一个替代数据源,您的意思是测试/ prod环境? –

回答

3

你可以定义所有的环境依赖豆成多个文件,如:

  • 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=prodmyapp.env不能从属性占位符中设置,因为在之前解决了<import>属性占位符。

0

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