codecamp

Hasor 接口注入

除了上面这种方式直接注入一个对象之外,Hasor 还支持注入一个接口。让我们改进一下上面的例子加以解释说明。首先 PojoBean 是一个接口,那么 InfoBean 在注入的时就是要注入一个接口,例如下面:

public class InfoBean {
    @Inject
    private PojoBean pojo;
}

public interface PojoBean {
    ...
}


这种情况下如果使用 @Inject 注入一个接口,框架会因为找不到具体的实现类而导致注入失败,因此在这种情况下我们要在接口上标记上 @ImplBy 注解,这个注解会告诉框架这个接口的实现类是哪个,例如下面这样:

public class InfoBean {
    @Inject
    private PojoBean pojo;
}

@ImplBy(PojoBeanImpl.class)
public interface PojoBean {
    ...
}

public class PojoBeanImpl implements PojoBean {
    ...
}


如果您不想使用 @ImplBy Hasor 还允许你在 install 阶段自己手动设置 PojoBean 接口的实现类,为了实现目标我们必须要在 Module 的 loadModule 方法中使用下面这样的代码来指定接口和实现类的关系:

apiBinder.bindType(PojoBean.class).to(PojoBeanImpl.class);


Hasor 类型注入
Hasor 名称注入
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }