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了。

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

     

  • 相关阅读:
    将font-size设置为 12px 以下,Chrome浏览器只能显示12px怎么办?
    如何创建.gitignore文件,忽略不必要提交的文件
    linux中将网速设置成10baseT/Half用于测试
    点击checkbox后满足条件才改变状态
    使用parted和kpartx 来对sdcard镜像进行分区调整,顺便用一下losetup
    linux添加具有root权限的管理员账号
    windows下获取系统的UUID
    pip修改镜像源
    linux中umount和mount
    mac安装brew
  • 原文地址:https://www.cnblogs.com/huzi007/p/5798688.html
Copyright © 2011-2022 走看看