我有一个关于绑定和注释的问题。
我有以下课程:
public class MailFacadeImpl implements MailFacade {
private final PersonDao personDao;
@Inject
public MailFacadeImpl(@Mail PersonDao personDao) {
super();
this.personDao = personDao;
}
PersonDao注释了自定义注释。 我希望能够在实现AbstractModule的类中测试这个注释。
这是一段代码:
bind(new TypeLiteral<SecurityRulesFactory<Person>>(){}).toProvider(FactoryProvider.newFactory(
new TypeLiteral<SecurityRulesFactory<Person>>(){}, new TypeLiteral<MailSecurityRulesCrdb>(){}));
我想有类似的东西:
if(PersonDAO is annotated with(Mail.class) ){
bind(new TypeLiteral<SecurityRulesFactory<Person>>(){}).toProvider(FactoryProvider.newFactory(
new TypeLiteral<SecurityRulesFactory<Person>>(){}, new TypeLiteral<MailSecurityRulesCrdb>(){}));
}
你认为这可能吗?
thx求助:-) 祝周五愉快!
答案 0 :(得分:0)
目前尚不清楚为什么要让您的模块进行此测试。相反,您的模块可以指定如何为PersonDao
注释的注入点获取或创建Mail
实例:
bind(PersonDao.class).annotatedWith(Mail.class).to(EmailAwarePersonDao.class);
请注意,您的PersonDao.class.isAnnotationPresent(Mail.class)
在此无效,因为PersonDao
类本身未使用Mail
进行注释; MailFacadeImpl
构造函数的参数具有该注释。有办法测试,但如果你试图从Guice模块那样做,你可能做错了。