zoukankan      html  css  js  c++  java
  • guice基本使用,配置模块的两种方式(三)

    guice是使用module进行绑定的,它提供了两种方式进行操作.

    第一种是继承AbstractModule抽象类.

     1 package com.ming.user.test;
     2 
     3 import com.google.inject.AbstractModule;
     4 
     5 /**
     6  * 继承 AbstractModule这个抽象类
     7  * @author Administrator
     8  *
     9  */
    10 public class TestModule extends AbstractModule{
    11 
    12     @Override
    13     protected void configure() {
    14         
    15         bind(Dog.class).to(DarkDog.class);
    16         
    17     }
    18 }

    第二种是实现Module接口:

     1 package com.ming.user.test;
     2 
     3 import com.google.inject.Binder;
     4 import com.google.inject.Module;
     5 
     6 /**
     7  * 实现module 接口
     8  * @author mingge
     9  *
    10  */
    11 public class GoogleGuiceModule implements Module{
    12 
    13     @Override
    14     public void configure(Binder arg) {
    15         arg.bind(Dog.class).to(DarkDog.class);
    16     }
    17 
    18     
    19 }

    例子代码如下:

    1 package com.ming.user.test;
    2 
    3 public class Dog {
    4     
    5     void eat(){
    6         System.out.println("父类的在go,go,go。。。");
    7     }
    8 }
     1 package com.ming.user.test;
     2 
     3 public class DarkDog extends Dog{
     4 
     5     @Override
     6     void eat() {
     7         System.out.println("heeeelo");
     8         //super.eat();
     9     }
    10 
    11     
    12 }
     1 package com.ming.user.test;
     2 
     3 import com.google.inject.AbstractModule;
     4 
     5 /**
     6  * 继承 AbstractModule这个抽象类
     7  * @author Administrator
     8  *
     9  */
    10 public class TestModule extends AbstractModule{
    11 
    12     @Override
    13     protected void configure() {
    14         
    15         bind(Dog.class).to(DarkDog.class);
    16         
    17     }
    18 }
     1 package com.ming.user.test;
     2 
     3 import com.google.inject.Binder;
     4 import com.google.inject.Module;
     5 
     6 /**
     7  * 实现module 接口
     8  * @author mingge
     9  *
    10  */
    11 public class GoogleGuiceModule implements Module{
    12 
    13     @Override
    14     public void configure(Binder arg) {
    15         arg.bind(Dog.class).to(DarkDog.class);
    16     }
    17 
    18     
    19 }

    测试:

     1 package com.ming.user.test;
     2 
     3 import com.google.inject.Guice;
     4 import com.google.inject.Injector;
     5 
     6 
     7 public class Test {
     8     
     9     public static void main(String[] args) {
    10          Injector injector = Guice.createInjector(new GoogleGuiceModule());  
    11          // Injector injector = Guice.createInjector(new TestModule()()); //跟上一行代码目标意义一样哦
    12          Dog dog=injector.getInstance(Dog.class);
    13          dog.eat();
    14     }
    15 }

    我们项目用得最多的是AbstractModule,当然如果有特殊需要,你也可以扩张Module了。

    下篇聊一聊绑定之类的......

     

  • 相关阅读:
    {Notes}{Latex}{multirow}
    [Reship] Mean Shift 算法介绍
    {Notes}{LaTeX}{enumerate}
    This is a test.
    js中的执行环境和作用域链
    js的预解析
    js笔试题一套(未完待续)
    使用setTimeout 来实现setInterval的效果
    ie6 ie7下报脚本错误"Expected identifier, string or number" 的原因和解决方法
    【雕爷学编程】Arduino动手做(63)---TCS3200D颜色识别传感器
  • 原文地址:https://www.cnblogs.com/huzi007/p/5798688.html
Copyright © 2011-2022 走看看