ton*_*nga 4 java spring dependency-injection mongodb
我有一个具有MongoDB客户端成员的类,它通过构造函数args注入:
public class MyDAO {
private MongoClient mongoClient;
public MyDAO(MongoClient mongoClient) {
this.mongoClient = mongoClient;
/*mongoClient = new MongoClient("localhost", 27017);*/ //This would be the way without using DI.
}
}
Run Code Online (Sandbox Code Playgroud)
我的bean配置文件bean.xml如下:
<bean id="myDao" class="com.example.MyDAO">
<constructor-arg ref="mongo" />
</bean>
<bean id="mongo" class="com.mongodb.MongoClient">
<property name="host" value="localhost" />
<property name="port" value=27017 />
</bean>
Run Code Online (Sandbox Code Playgroud)
但我得到bean.xml的错误消息:
No setter found for property 'port' in class 'com.mongodb.MongoClient'
Run Code Online (Sandbox Code Playgroud)
从MongoDB的Javadoc开始,该类MongoClient没有setter方法host和port属性.那么如何将值注入此Mongo bean?
该MongoClient级似乎有一个构造函数
MongoClient(String host, int port)
Run Code Online (Sandbox Code Playgroud)
因此,您可以使用基于构造函数的依赖注入
<bean id="mongo" class="com.mongodb.MongoClient">
<constructor-arg name="host" value="localhost" />
<constructor-arg name="port" value="27017" />
</bean>
Run Code Online (Sandbox Code Playgroud)
注意:由于参数名称并不总是可用(不是通过反射,而是通过字节代码操作),因此您可以使用始终可用的参数类型来区分
<bean id="mongo" class="com.mongodb.MongoClient">
<constructor-arg type="java.lang.String" value="localhost" />
<constructor-arg type="int" value="27017" />
</bean>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4177 次 |
| 最近记录: |