[英]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.Inject
和com.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.