什么情况下必须使用 wire?
有人说 当名称不唯一时就必须使用用wire了,对吗?
reference 中的multiplicity属性值 0..1 or 1..1 or 0..n or 1..n 代表什么?
能这样理解吗?
1..1 代表 reference 能且只能查询到一个目标 0..1 代表 reference 能查询到0或1个目标 1..n 代表 reference 能够查询到1个或n个目标 0..n 代表 reference 能查询到0个或n个目标
reference 中的multiplicity 理解一点了当 multiplicity 是1..n 或0..n 时,你的引用对象需要用数组 例如: public class HelloImpl implements Hello { Login[] login; public String echo(String str) { return login[0].login(str); } public Login[] getLogin() { return login; } @Reference public void setLogin(Login[] login) { this.login = login; } }
<component name="HelloComponent"> <implementation.java class="sca.reference.multiplicity.HelloImpl" /> <reference name="login" multiplicity="1..n" target="LoginOneComponent LoginTwoComponent"/> </component>
<component name="LoginOneComponent"> <implementation.java class="sca.reference.multiplicity.LoginOne" /> </component> <component name="LoginTwoComponent"> <implementation.java class="sca.reference.multiplicity.LoginTwo" /> </component>
哈哈,找到一个应用场景了
http://www.osoa.org/xmlns/sca/1.0\"" name="\"hello\"" targetnamespace="\"http://ljy\"">
<composite xmlns="http://www.osoa.org/xmlns/sca/1.0" targetNamespace="http://ljy" name="hello">
<component name="HelloComponent"> <implementation.java class="sca.reference.multiplicity.HelloImpl" /> </component>
<component name="LoginOneComponent"> <implementation.java class="sca.reference.multiplicity.LoginOne" /> </component>
<wire source="HelloComponent/login" target="LoginOneComponent"></wire> </composite>
如果multiplicity是0..n或1..n, JAVA类型可以是java.util.Collection以及其子类.
例如:
@Reference
public List<OtherService> otherServices;
代码如下: mail.composite 文件: <composite xmlns="http://www.osoa.org/xmlns/sca/1.0" targetNamespace="http://mail" name="MailComposite"> <component name="MailComponent"> <implementation.java class="sca.reference.multiplicity.MailImpl" /> </component> </composite>
hello.composite 文件: <composite xmlns="http://www.osoa.org/xmlns/sca/1.0" targetNamespace="http://hello" name="HelloComposite"> <component name="HelloComponent"> <implementation.java class="sca.reference.multiplicity.HelloImpl" /> <reference name="mail"/> </component> </composite>
wire.composite 文件: <composite xmlns="http://www.osoa.org/xmlns/sca/1.0" targetNamespace="http://wire" xmlns:mail="http://mail" xmlns:hello="http://hello" name="wire"> <include name="hello:HelloComposite"/> <include name="mail:MailComposite"/> <wire source="HelloComponent/mail" target="MailComponent"></wire> </composite>