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

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

     

  • 相关阅读:
    gearman简介及安装使用
    Linux下进程的建立
    Linux中无缓冲文件I/O API
    XMLRPC for PHP简介及使用
    数据库水平切分方法
    LVS简介及使用
    进程通信之消息队列
    install docker/dockercompose
    centOS7 下安装 JDK
    iTerm2/firewall/pulsar
  • 原文地址:https://www.cnblogs.com/huzi007/p/5798688.html
Copyright © 2020-2023  润新知