首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是wirebox中的coldspring <map> & <list> eqv?

什么是wirebox中的coldspring <map> & <list> eqv?
EN

Stack Overflow用户
提问于 2012-07-26 08:22:37
回答 2查看 231关注 0票数 0

我正在将我的Coldspring xml移植到Wirebox中,但是我被卡住了。

Coldspring中的<map>可以创建单例的结构,然后通过构造函数或设置器将该结构传递到“bean”中。<list>创建一个数组。

我应该用Wirebox.cfc写什么来做同样的事情呢?

代码语言:javascript
复制
<bean id="Foo" class="com.foo">
    <constructor-arg name="something">
        <map>
            <entry key="apple">
                <ref bean="apple"/>
            </entry>                
            <entry key="banana">                    
                <ref bean="banana"/>
            </entry>                    
        </map>
    </constructor-arg>
</bean>

<bean id="bar" class="com.bar">
    <constructor-arg name="anArray">
        <list>
            <bean class="com.XX"/>
            <bean class="com.YY"/>
        </list>
    </constructor-arg>
</bean>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-27 00:51:07

更新:在阅读了ColdSpring如何做到这一点后,我找到了一种简洁的方法来支持这一点。

首先,创建一个有两种方法的cfc:

代码语言:javascript
复制
component 
{
    struct function buildStruct()   {
        return arguments;
    }

    array function buildArray()     {
        var array = [];

        for (var index = 1; index <= arrayLen(arguments); index++)
            array[index] = arguments[index];

        return array;
    }
}

然后在wirebox config.cfc中:

代码语言:javascript
复制
map("Factory")
        .to("com.util.wirebox.Factory")
        .asSingleton()
        .noAutowire();    

map("something")
        .toFactoryMethod(factory="Factory", method="buildStruct")
        .methodArg(name="apple", ref="apple")
        .methodArg(name="banana", ref="banana");

map("Foo").to("com.Foo").initArg(name="something", ref="something").asSingleton();

原始答案:

Luis Majano's Answer

代码语言:javascript
复制
// Map Binder so you can do utility methods
map("myBinder").toValue( this );
// Map the singleton maps
map("s1Map").toFactoryMethod("myBinder", "buildMap")
    .methodArg(name="mapType", value="1");


// Map A service with a singleton map
map("Service").to("path")
    .initArg(name="myMap", ref="s1Map");

他建议我申请急诊室,就是这样:http://coldbox.assembla.com/spaces/coldbox/support/tickets/1387-support-for--list--and--map--of-coldspring-xml

票数 1
EN

Stack Overflow用户

发布于 2012-07-26 08:56:20

让我们分解一下,看看这里发生了什么。

1.)您正在创建一个id为foo的新bean,并将其映射到com.foo。要在wirebox中做到这一点,请使用map方法,并传入稍后要引用它的任何键。接下来,使用to方法将该键映射到路径

2.)您希望将一个map (结构)传递给组件init方法。要做到这一点,只需传入一个普通结构。这可以是任何值,包括使用initWith方法的其他bean。

代码语言:javascript
复制
<cfscript>
    map("Foo")
        .to("com.foo")
        .initWith({apple=apple,banana=banana})
</cfscript>

您还可以下载ColdFusion builder的Coldbox插件。这有一个很好的小工具,可以让你右击一个coldspring定义文件并将其转换为wirebox。希望这能有所帮助。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11660640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档