申明需要注入的对象
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支持三种方法参数注入:
当框架检测到响应函数参数列表中某个参数类型有依赖注入绑定,框架自动使用依赖注入提供该参数值
// 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
实例
链接
- ActFramework依赖注入 II - 注入对象类型
- Actframework依赖注入 III - 定义绑定
- ActFramework官网
- [ActFramework@开源中国](https://www.oschina.net/p/actframework)
- [ActFramework@码云](https://git.oschina.net/actframework/actframework)