我有一个具有MongoDB客户端成员的类,它通过构造函数args注入:public class MyDAO {private MongoClient mongoClient;public MyDAO(MongoClient mongoClient) {this.mongoClient = mongoClient;/*mongoClient = new ...
我有一个具有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.
}
}
我的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>
但我得到bean.xml的错误消息:
No setter found for property 'port' in class 'com.mongodb.MongoClient'
从MongoDB的Javadoc开始,MongoClient类没有用于主机和端口属性的setter方法.那么如何将值注入此Mongo bean?
解决方法:
MongoClient类似乎有一个constructor
MongoClient(String host, int port)
因此你可以使用constructor-based dependency injection
<bean id="mongo" class="com.mongodb.MongoClient">
<constructor-arg name="host" value="localhost" />
<constructor-arg name="port" value="27017" />
</bean>
注意:由于参数名称并不总是可用(不是通过反射,而是通过字节代码操作),因此您可以使用始终可用的参数类型来区分
<bean id="mongo" class="com.mongodb.MongoClient">
<constructor-arg type="java.lang.String" value="localhost" />
<constructor-arg type="int" value="27017" />
</bean>
沃梦达教程
本文标题为:java – 如何在这个MongoDB连接案例中注入一个bean?
基础教程推荐
猜你喜欢
- 微服务框架FEIGN使用常见问题分析 2023-04-17
- SpringMVC REST风格深入详细讲解 2023-06-24
- log4j升级log4j2遇到的问题及解决方式 2023-08-11
- Springboot 配置线程池创建线程及配置 @Async 异步操作线程池详解 2023-05-24
- JavaWeb通过IDEA配置Servlet操作流程详解 2023-06-07
- Spring Security十分钟入门教程 2023-05-14
- java – 在JSP中更新数据库 2023-11-05
- 通过netty把百度地图API获取的地理位置从Android端发送到Java服务器端的操作方法 2023-06-17
- idea中lombok的用法 2023-08-08
- SpringBoot 实现自定义的 @ConditionalOnXXX 注解示例详解 2023-05-08