繁体   English   中英

木兰和吉斯绑定注释

[英]Magnolia and Guice Binding Annotations

我试图为java.sql.DataSource提供@Provides方法和BindingAnnotation 如何告诉Guice扫描软件包或类中的这些注释? 我必须设置自己的Guice(servlet-)模块还是Magnolia负责? 据我了解,可以将类型与Magnolia模块描述符xml中的实际实现绑定在一起,但是在这种情况下,我认为这是不可行的。 到目前为止,我有一个提供者方法:

@Provides 
@MembershipDS 
public DataSource createDataSource() {
    // retreive the data source over JNDI and return it 
    // (calling this method manually returns an actual DataSource)
}

和注释:

@BindingAnnotation
@Target({ FIELD, PARAMETER, METHOD })
@Retention(RUNTIME)
public @interface MembershipDS {

}

但是,当我将其注入某个地方时,它为null,并且未调用provider方法:

@Inject 
@MembershipDS 
private DataSource membershipDS;

请注意,我尝试了javax.inject.Injectcom.google.inject.Inject ,两者都导致相同的结果。

您也可以通过编程方式配置这些内容。 玉兰具有一种机制,您可以在其中将配置器添加到模块描述符xml文件。 如果该类是Guice模块,则将使用它并可以使用所有Guice配置选项。

<components>
  <id>main</id>
  <configurer>
    <class>com.mycompany.MyConfigurer</class>
  </configurer>
  ...
</components>

和班级

public class MyConfigurer extends AbstractGuiceComponentConfigurer {
    // your Guice bindings goes here
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM