[英]Spring bean to google guice conversion
下面的摘录摘自这里 。 我的问题是我如何在Guice中具有此绑定。
<bean id="searchProcessor" class="com.googlecode.genericdao.search.jpa.JPASearchProcessor">
<constructor-arg ref="metadataUtil" />
</bean>
<bean id="metadataUtil" class="com.googlecode.genericdao.search.jpa.hibernate.HibernateMetadataUtil"
factory-method="getInstanceForEntityManagerFactory">
<constructor-arg ref="entityManagerFactory" />
</bean>
我需要@Inject JPASearchProcessor(请参见下文)。 我对Guice完全陌生。
@Inject
public void setSearchProcessor(JPASearchProcessor searchProcessor) {
super.setSearchProcessor(searchProcessor);
}
我自己解决了
创建提供程序类HibernateMetadataUtilProvider以提供HibernateMetadataUtil
package core.models.dao; import javax.persistence.EntityManagerFactory; import org.hibernate.ejb.HibernateEntityManagerFactory; import com.google.inject.Inject; import com.google.inject.Provider; import com.googlecode.genericdao.search.MetadataUtil; import com.googlecode.genericdao.search.jpa.hibernate.HibernateMetadataUtil; @SuppressWarnings("deprecation") public class HibernateMetadataUtilProvider implements Provider<MetadataUtil> { @Inject private EntityManagerFactory emf; @Override public MetadataUtil get() { return HibernateMetadataUtil.getInstanceForEntityManagerFactory((HibernateEntityManagerFactory) emf); } }
创建了另一个类JPASearchProcessorProvider,它将注入JPASearchProcessor
package core.models.dao; import com.google.inject.Inject; import com.google.inject.Provider; import com.googlecode.genericdao.search.MetadataUtil; import com.googlecode.genericdao.search.jpa.JPASearchProcessor; public class JPASearchProcessorProvider implements Provider<JPASearchProcessor> { @Inject private MetadataUtil mdu; @Override public JPASearchProcessor get() { return new JPASearchProcessor(mdu); } }
然后在我们的注入类中,我们可以简单地绑定这些提供程序
public class AppInjector extends AbstractModule { @Override protected void configure() { /* * JPA Bindings */ bind(JPASearchProcessor.class).toProvider(JPASearchProcessorProvider.class); bind(MetadataUtil.class).toProvider(HibernateMetadataUtilProvider.class); }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.