微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Actframework中使用依赖注入

申明需要注入的对象

ActFramework通过javax.inject.Inject注解识别需要注入的对象. 你可以通过以下三种标准方式申明需要注入的对象:

字段注入

public class Foo {
    @Inject
    private Bar bar;
}

构造器注入

public class Foo {
    private Bar bar
    
    @Inject
    public Foo(Bar bar) {
        this.bar = bar;
    }
}

设置器(Setter)注入

public class Foo {
    private Bar bar
    @Inject
    public void setBar(Bar bar) {
        this.bar = bar;
    }
}

小贴士 字段注入最为简明,不过对单元测试会造成一些麻烦

获取有依赖申明的对象

App app = App.instance();
// this ensure Bar has been injected into Foo
Foo foo = app.getInstance(Foo.class);

方法参数的依赖注入

Actframework支持三种方法参数注入:

  1. 响应器方法
  2. 命令器方法
  3. 任务方法

当框架检测到响应函数参数列表中某个参数类型有依赖注入绑定,框架自动使用依赖注入提供该参数值

// suppose XyzDao has bound provider,then framework will use the provider to 
// value for `dao` parameter
public Result handleXyzRequest(String s,int i,ActionContext context,XyzDao dao) {
    ...
}

通过Module类声明绑定

如果你以前使用过Guice,和通常的Guice应用一样,你可以创建Module类来申明注入绑定规则:

public class GreetingModule extends org.osgl.inject.Module {
    @Override
    protected void configure() {
        bind(GreetingService.class).to(GreetingServiceImpl.class);
    }
}

小贴士 在ActFramework中你不必使用Module类来创建Injector对象实例。框架会自动寻找所有申明的Module类并在内部创建Injector实例

链接

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐