如何在实现AbstractModule的类中测试注释对象

时间:2010-11-26 09:27:15

标签: gwt guice

我有一个关于绑定和注释的问题。

我有以下课程:

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求助:-) 祝周五愉快!

1 个答案:

答案 0 :(得分:0)

目前尚不清楚为什么要让您的模块进行此测试。相反,您的模块可以指定如何为PersonDao注释的注入点获取或创建Mail实例:

bind(PersonDao.class).annotatedWith(Mail.class).to(EmailAwarePersonDao.class);

请注意,您的PersonDao.class.isAnnotationPresent(Mail.class)在此无效,因为PersonDao类本身未使用Mail进行注释; MailFacadeImpl构造函数的参数具有该注释。有办法测试,但如果你试图从Guice模块那样做,你可能做错了。