Guice Provider绑定

package com.ilucky.guice.test7;

import com.google.inject.Guice;
import com.google.inject.Injector;

/**
 * v1.0:20161114
 * Provider绑定.
 * 如果建对象的过程很复杂,我们就会考虑,是不是可以把它独立出来,形成一个专门的类,基于这个思想,
 * Guice提供了一个接口Provider,Provider就像 Factories一样创建和返回对象.
 * 在大部分情况下,客户端可以直接依赖Guice框架来为服务(Services)创建依赖的对象.
 * 但是少数情况下,应用程序需要为一个特定类型的对象定制创建流程(Object creation process),
 * 这样可以控制对象创建的数量,提供缓存(Cache)机制等,基于这种需求,Guice提供了Provider类.
 * 只要实现Provider接口,就会得到专门为创建相应类型对象所需的类.
 */
public class MainTest {

    public static void main(String[] args) {
        Injector injector = Guice.createInjector(new MyModule());
        MyService myService = injector.getInstance(MyService.class);
        myService.service("Hello Guice!");
    }
}
/**
===>Hello Guice!
*/
package com.ilucky.guice.test7;

import com.google.inject.Binder;
import com.google.inject.Module;

public class MyModule implements Module{

    public void configure(Binder binder) {
        binder.bind(MyService.class).toProvider(MyProvider.class);      
    }
}
package com.ilucky.guice.test7;

import com.google.inject.Provider;

public class MyProvider implements Provider<MyService>{

    @Override
    public MyService get() {
        MyService myService = new MyServiceImpl();
        return myService;
    }    
}
package com.ilucky.guice.test7;

public interface MyService {

    public void service(String service);
}
package com.ilucky.guice.test7;

public class MyServiceImpl implements MyService {

    public void service(String service) {
        System.out.println("===>" + service);
    }
}

---------------------
原文:https://blog.csdn.net/sidongxue2/article/details/72626808
版权声明:本文为博主原创文章,转载请附上博文链接!

posted @ 2018-11-02 11:51  舞羊  阅读(758)  评论(0编辑  收藏  举报