如何从applicationContext.xml文件获取参数/属性

时间:2013-11-25 01:50:28

标签: spring mongodb applicationcontext

应用程序上下文文件包含

的applicationContext.xml

<!-- Directs Java to correct Mongo DB address and port -->
<mongo:mongo host="127.0.0.1" port="27017" />
<mongo:db-factory dbname="myDb" />

<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
    <constructor-arg name="mongoDbFactory" ref="mongoDbFactory" />

问题1 ::从我的课程中,如何从applicationContext.xml文件中检索mongo host =“127.0.0.1”?

示例:

String port = applicatoinContextObject.getValue("mongo host");

//which would return port="127.0.0.1"

这显然不起作用,但这个伪代码正是我想要做的。

2 个答案:

答案 0 :(得分:1)

也许您可能最好将特定于环境的配置外部化到属性文件,然后在applicationContext.xml中使用属性替换。这样,您可以以编程方式轻松访问属性,并将特定于环境的配置与主Spring配置分开。

<强> mongo.properties

mongo.host=127.0.0.1
mongo.port=27017
mongo.dbname=myDb

<强>的applicationContext.xml

<context:property-placeholder location="classpath:/mongo.properties"/>

<!-- Directs Java to correct Mongo DB address and port -->
<mongo:mongo host="${mongo.host}" port="${mongo.port}" />
<mongo:db-factory dbname="${mongo.dbname}" />

<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
    <constructor-arg name="mongoDbFactory" ref="mongoDbFactory" />

然后在你的代码中:

Resource resource = new ClassPathResource("/mongo.properties");
Properties props = PropertiesLoaderUtils.loadProperties(resource);
String mongoPort = props.getProperty("mongo.port");

答案 1 :(得分:1)

深化spring-data-mongodb(java驱动程序)版本。您需要执行以下操作:

Mongo mongo = applicationContext.getBean(Mongo.class);
String host = mongo.getConnectPoint();

关键是你有一个Mongo类型的bean是你的应用程序上下文。