zoukankan      html  css  js  c++  java
  • Guice示例

    Guice,google名下的产物——一个号称比Spring快的容器,看它的实例:
    1.新建IWork接口:
    package com.kay.interfaces;

    public interface IWork {

        
    public void work(String workname);
    }
    2.实现IWork接口:
    package com.kay.impl;

    import com.kay.interfaces.IWork;

    public class Workimpl implements IWork{

        
    public void work(String workname) {
            System.
    out.println(workname);
        }

    }
    3.来一个具体的work:
    package com.kay.work;

    import com.kay.impl.Workimpl;

    public class Cooking {

        
    private Workimpl work ;
        
        
    private String workname = "cooking";
        
        
        
    public void work(){
            work.work(workname);
        }
    }
    4.测试一下:
    package com.kay.Test;

    import com.kay.work.Cooking;

    import junit.framework.TestCase;


    public class CookingTest extends TestCase {

        Cooking cook ;
        
    protected void setUp() throws Exception {
            cook 
    = new Cooking();
        }
        public
     void testcook(){
            cook.work();
        }

    }

    结果大家都知道,JUnit肯定是红条。下面使用Guice来注入:
    改变Cooking类:
    package com.kay.work;

    import com.google.inject.Inject;
    import com.kay.impl.Workimpl;

    public class Cooking {

        
    private Workimpl work ;
        
        
    private String workname = "cooking";
        
        @Inject
        
    public void Workimpl(Workimpl workimpl){
            
    this.work = workimpl;
        }
        
        
    public void work(){
            work.work(workname);
        }
    }
    创建类实现Module接口:
    package com.kay.Module;

    import com.google.inject.Binder;
    import com.google.inject.Module;
    import com.kay.impl.Workimpl;
    import com.kay.interfaces.IWork;

    public class MyModule implements Module {

        
    public void configure(Binder binder) {
            binder.bind(IWork.
    class).to(Workimpl.class);
        }

    }
    改变一下测试类:
    package com.kay.Test;

    import com.google.inject.Guice;
    import com.google.inject.Injector;
    import com.kay.Module.MyModule;
    import com.kay.work.Cooking;

    import junit.framework.TestCase;


    public class CookingTest extends TestCase {

        Cooking cook ;
        MyModule mm ;
        
    protected void setUp() throws Exception {
            cook 
    = new Cooking();
            mm 
    = new MyModule(); 
        }
        
    public void testcook(){
            Injector 
    in = Guice.createInjector(mm);
            
    in.injectMembers(cook);
            cook.work();
        }

    }

    这次大家应该看到是JUnit的绿色的条,并且控制台打印出了cooking。
    我晕啊,怎么插入不了java代码格式了,上面的代码都是C#格式的,大家注意!

  • 相关阅读:
    微信 token ticket jsapi_ticket access_token 获取 getAccessToken get_jsapi_ticket方法
    PHP 日志 记录 函数 支持 数组 对象 新浪 sae 环境 去掉 空格 换行 格式化 输出 数组转字符串
    原生 原始 PHP连接MySQL 代码 参考mysqli pdo
    PHP 数字金额转换成中文大写金额的函数 数字转中文
    使用PHPMailer发送带附件并支持HTML内容的邮件
    设置输出编码格式 header 重定向 执行时间 set_time_limit 错误 报告 级别 error_reporting
    html5 bootstrap pannel table 协议 公告 声明 文书 模板
    指向指针的指针
    二级指针
    c语言:当指针成为参数后
  • 原文地址:https://www.cnblogs.com/kay/p/699680.html
Copyright © 2011-2022 走看看