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#格式的,大家注意!

  • 相关阅读:
    别了,DjVu!
    DjVu转PDF
    我的电子书历程
    连续翻页浏览器面临的共同问题
    对超过2TB的硬盘进行分区需要使用parted
    DB2常用命令
    CentOS增加网卡
    mysql相关参数解读
    max_user_connections参数设置试验
    mysql最大连接数试验
  • 原文地址:https://www.cnblogs.com/kay/p/699680.html
Copyright © 2011-2022 走看看