阅读(2213) (1)

Hasor 得到AppContext

2017-09-28 17:30:32 更新

用过 Spring 的同学都知道要想注入 Spring 容器本身您必须要实现一个接口。在Hasor 中您也可以使用相同的方式,但是 Hasor 为您提供了一种更简单的方式,如下:

public class TestBean {
    @Inject()
    private AppContext appContext;
}


您的眼睛没有看错,就是这么简单。一个 @Inject 就可以搞定。


另外 Hasor 还提供了一些其它方式方便您在一些特殊场景下拿到 AppContext。

public class AwareBean implements AppContextAware {
    public void setAppContext(AppContext appContext) {
       ...
    }
}

appContext.getInstance(AwareBean.class);


您还可以利用 Hasor 的事件机制来拿到 AppContext,例如:

public class MyModule implements Module {
    public void loadModule(ApiBinder apiBinder) throws Throwable {
        Hasor.autoAware(apiBinder.getEnvironment(),new AwareBean());
    }
}


Hasor.autoAware方法使用时,要注意,一定要在 Hasor onStart 阶段之前调用,否则您即便是调用了这个方法也不会得到 AppContext 对象。这是因为 aware 是通过 ContextEvent_Started 事件完成 AppContext 对象获取的。