在这种MongoDB连接情况下,如何注入bean? - java

我有一类具有通过构造函数args注入的MongoDB客户成员的类:

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没有hostport属性的设置方法。那么如何将值注入此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 Applet的URLConnection与PHP无效 - java

我已经研究了Oracle文档和示例,但仍然无法正常工作。我有一个Java Applet,它只是尝试使用URLConnection和OutputStreamWriter通过POST将文本字段发送到PHP脚本。 Java方面似乎工作正常,没有引发异常,但是PHP在我的页面上未显示任何输出。我是PHP新手,因此请耐心等待。这是相关的Java部分: try { UR…

<T>如何在这里处理String和Integer - java

我不明白T如何使用Integer和String。如此处显示功能中所示,T同时处理整数和字符串。该代码如何工作?class firstBase { <T> void display(T give_num, T give_String) { System.out.println("The given number is = " +…

页面加载而不是提交时发生struts验证 - java

请原谅我;我对Struts有点陌生。我遇到一个问题,即页面加载而不是我实际提交表单时发生了验证。我整天都在论坛上搜寻和搜寻,没有任何运气。我显然做错了一些事情,应该很容易确定,但是我还没有发现问题所在。这是我的struts.xml的片段:<action name="*Test" method="{1}" clas…

DataSourceTransactionManager和JndiObjectFactoryBean和JdbcTemplate的用途是什么? - java

以下的用途是什么:org.springframework.jdbc.core.JdbcTemplate org.springframework.jdbc.datasource.DataSourceTransactionManager org.springframework.jndi.JndiObjectFactoryBean <tx:annotatio…

Java-搜索字符串数组中的字符串 - java

在Java中,我们是否有任何方法可以发现特定字符串是字符串数组的一部分。我可以避免出现一个循环。例如String [] array = {"AA","BB","CC" }; string x = "BB" 我想要一个if (some condition to tell wheth…