学习 Guice(一):第一个 Guice 应用

Guice 是 Google 开发并开源的轻量级 DI (依赖注入)框架

GitHub 地址:https://github.com/google/guice

依赖

编辑 pom.xml 文件,添加依赖:

<dependency>  
    <groupId>com.google.inject</groupId>
    <artifactId>guice</artifactId>
    <version>4.1.0</version>
</dependency>  

绑定

定义模块类,继承 com.google.inject.AbstractModule 抽象类,实现 configure 方法

在 configur* 方法内部,绑定(调用 bind 方法)接口到实现类(调用 to 方法)

这一步相当于 Spring 在 applicationContext.xml 定义 Bean 的过程

举个 🌰:

public class ApplicationModule extends AbstractModule {

    @Override
    protected void configure() {
        bind(UserService.class).to(UserServiceImpl.class);
    }

}

注入

使用👆配置的 ApplicationModule 模块创建 Injector 注入器,之后,即可通过注入器获取类实例:

Injector injector = Guice.createInjector(new ApplicationModule());  
Application app = injector.getInstance(Application.class);  

通过 @Inject 注解,注入绑定到 UserService 接口的实现类 UserServiceImpl

@Inject
private UserService userService;  

完整的🌰:

public class Application {

    @Inject
    private UserService userService;

    public static void main(String[] args) {
        Injector injector = Guice.createInjector(new ApplicationModule());
        Application app = injector.getInstance(Application.class);
        app.run();
    }

    public void run() {
        // use userService do something
    }

}