【问题标题】:How to create and config an inner builder class with spring如何使用 spring 创建和配置内部构建器类
【发布时间】:2015-04-03 02:07:50
【问题描述】:

我正在尝试对以下代码 sn-p 进行弹性化:

MongoClient mongoClient = new MongoClient("127.0.0.1", 27017);
DB db = mongoClient.getDB("jcr");
DocumentNodeStore ns = new DocumentMK.Builder().setMongoDB(db)
                .getNodeStore();
Repository repo = new Jcr(new Oak(ns)).createRepository();

取自 Oak 网站:http://jackrabbit.apache.org/oak/docs/construct.html

问题线是:

DocumentNodeStore ns = new DocumentMK.Builder().setMongoDB(db)
                .getNodeStore();

这是我在 xml 中的配置方式:

<bean id="builder" class="org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder">   
        </bean>

<bean factory-bean="builder" factory-method="setMongoDB" >
       <constructor-arg name="db" value="#{mongoDbTags.getDb()}"/>
</bean>

我已经配置了一个SimpleMongoDbFactory 并获得了要注入到通过工厂方法调用setMethod的构建器bean的db。

请注意,这不作为构建器类下的属性存在,但方法确实存在。

这是我的配置文件:

    <bean id="mongo" class="com.mongodb.MongoClient">
        <constructor-arg name="host" value="localhost" />
        <constructor-arg name="port" value="27017" />
    </bean>
        <bean id="mongoDbTags" class="org.springframework.data.mongodb.core.SimpleMongoDbFactory">
            <constructor-arg name="mongo" ref="mongo" />
            <constructor-arg name="databaseName" value="jcr111" />
        </bean>
    <bean id="builder" class="org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder">   
    </bean>

        <bean factory-bean="builder" factory-method="setMongoDB" >
             <constructor-arg name="db" value="#{mongoDbTags.getDb()}"/>
          </bean>
    <bean id="documentMK" class="org.apache.jackrabbit.oak.plugins.document.DocumentMK">
    <constructor-arg name="builder" ref="builder" />
    </bean>

    <bean id="oak" class="org.apache.jackrabbit.oak.Oak">
        <constructor-arg name="store" value="#{builder.getNodeStore()}" />
    </bean>

    <bean id="jcr" class="org.apache.jackrabbit.oak.jcr.Jcr">
        <constructor-arg name="oak" ref="oak" />
    </bean>
        <bean id="jcrSessionFactory"
            class="org.springframework.extensions.jcr.JcrSessionFactory">
            <property name="repository"  value="#{jcr.createRepository()}" />
            <property name="credentials">
  <bean class="javax.jcr.SimpleCredentials">
                    <constructor-arg index="0" value="admin" />
                    <constructor-arg index="1" value="admin" />
                </bean>
            </property>
        </bean>

        <bean id="jcrTemplate" class="org.springframework.extensions.jcr.JcrTemplate">
            <property name="sessionFactory" ref="jcrSessionFactory" />
            <property name="allowCreate" value="true" />
        </bean>

【问题讨论】:

    标签: java spring


    【解决方案1】:

    对于其他陷入困境的人,我只是创建了一个包装类,它从其构造函数中调用构建器

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-26
      • 1970-01-01
      • 2011-04-18
      • 2019-12-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多