如何从同一个包连接到两个不同的数据库?

ycl3bljg  于 2021-07-06  发布在  Java
关注(0)|答案(0)|浏览(238)

我正在构建一个osgi应用程序,我想访问两个不同的mongodb,一个用于授权,另一个用于存储数据。
在我当前的blueprint.xml中,我用 <cm:property-placeholder . 为了使用mongo客户机,我只需添加 MongoConfig mongoConfig 在持久层,我用蓝图上的凭证连接到mongodb。
为了建立两个不同的连接,我应该向blueprint添加什么?
如何初始化两个不同的mongo客户端?
蓝图.xml

<cm:property-placeholder
            persistent-id="com.example"
            update-strategy="reload">
        <cm:default-properties>
            <cm:property name="mongodbUsername" value="XXXX"/>
            <cm:property name="mongodbPassword" value="XXXX"/>
            <cm:property name="mongodbDatabase" value="XXXX"/>
            <cm:property name="mongodbIp" value="XXXXXX"/>
            <cm:property name="mongodbPort" value="27017"/>
        </cm:default-properties>
    </cm:property-placeholder>

    <bean id="mongoConfig"
          class="com.example.MongoConfig"
          init-method="init">
        <property name="dbIp" value="${mongodbIp}"/>
        <property name="dbName" value="${mongodbDatabase}"/>
        <property name="dbPort" value="${mongodbPort}"/>
        <property name="dbPassword" value="${mongodbPassword}"/>
        <property name="dbUsername" value="${mongodbUsername}"/>
    </bean>

mongoconfig.java文件

public class MongoConfig {

    private String dbUsername;
    private String dbPassword;
    private String dbIp;
    private int dbPort;
    private String dbName;

    private MongoClient mongoClient;

    private static final String COLLECTION = "example";

    private MongoCollection<Document> myCollection;

    public void init() {
        String serverDetails = String.format("%s:%s", dbIp, dbPort);
        String userAuth = "";
        String connUrl = "";
        if (dbUsername != null && dbPassword != null) {
            userAuth = String.format("%s:%s", dbUsername, dbPassword);
            connUrl = String.format("mongodb://%s@%s", userAuth, serverDetails);
        } else {
            connUrl = String.format("mongodb://%s", serverDetails);
        }
        MongoClientURI uri = new MongoClientURI(connUrl);
        this.mongoClient = new MongoClient(uri);

        this.myCollection = mongoClient.getDatabase(dbName).getCollection(COLLECTION);
    }
}

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题