2-Hivemind基础

1-获取服务
    

    Hivemodule.xml要放在classpath指定地址,或jar包中的META-INF/下。

     Registry  registry = RegistryBuilder.constructDefaultRegistry();
     ServiceInterface service = (ServiceInterface)registry.getService("HiveMind.test.testone",ServiceInterface .class);

特殊情况
    RegistryBuilder builder = new
RegistryBuilder ();

    DefaultClassResolver resolver = new DefaultClassResolver();

    builder.addModuleDescriptorProvider( new xmlModuleDescriptorProvider
                                                                      (resolver,"META-INF/myHivemodule.xml"));

    Registry registry = builder.constructRegistry(Locale.getDefault());




 2-Ioc的三种实现方式

    type-1: interface
    type-2: setter/getter
    type-3: contructor


3- <implementation>元素用于为知道的serivce-id配置实现类。

    创建Service有2种方式:

    <create-instance>:使用new方式。

    <invoke-factory>元素用于指定以工厂方式实现service。
    工厂方式默认以HiveMind内置的service-id = "HiveMind.BuilderFactory"的Service来创建接口实例。
    工厂方式有4个属性:
            1-primitive:第一次被访问时,创建实例。
            2-singleton: 默认,Service被引用的时候,创建一个代理对象,当Service的方法被调用的时候,才真正创建该实例。
            3-threaded: 创建时与一个线程绑定在一起。
            4-pooled: 池化该service实例。

4-<construct autowire-services="true".../>
  当Service很多的时候,为了不使配置文件过于冗长,如果Service实现类中成员变量的类型正好与配置文件中某个服务的接口类型相同的话,将可以自动注入而不需要配置。

   实现该功能的3个条件:
    1- 只有一个另外的Service配置了该成员变量的接口。
    2- Service实现类的构造方法必须是public
    3- 成员变量的类型必须是接口。

    <service-point id="serviceid" interface="MyInterface">
                <invoke-factory>
                           <construct class="impl.MyInterfaceImpl" initialize-method="init"
                                              autowire-
services="false" />默认为true
                </invoke-factory>
    </service-ponit>


5-<configuration>..</configuration>
   
<!-- 定义一个配置点,所有对该配置点的贡献都将加入到一个List中去,然后传递给一个服务的List类型的成员变量中去-->
    <configuration-point id="testConfiguration1" shema-id="testSchema1" />

    <schema id="testSchema1">
          <element name="test"> <!-- 定义一个贡献点的配置节点为test -->
                   <attribute name="key" required = "true" />
                  
<attribute name="value" required = "true" />
                   <conversion class="com.HiveMind.configuration.MyConfiguration" />
                   <!-- 用于将传入的数据,转化为特定的对象,保存到List中去 -->
          </element>
    </schema>

    <!-- 给这个List添加一个元素 -->
    <contribution configuration-id="
testConfiguration1 ">
          <test key="name" value="foo" />
          <test key="name2" value="bar" />
    </contribution>

    <!-- 将添加好的配置点List注入到一个对象的成员变量中去 -->
    <service-point id="testService" interface="MyInterface">
             <invoke-factory>
                      <!-- 在构造方法中传入该List -->
                      <construct class="impl.MyInterfaceImpl">
                            <configuartion>
testConfiguration1 </configuration>
                      </construct>
             </invoke-factory>
    </service-point>

    public MyInftefaceImpl(List data){..初始化.};

   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值