Tag: guice

guice:命令行的运行时注入/绑定

我有以下问题: @Inject MyClass(Service service) { this.service = service; } public void doSomething() { service.invokeSelf(); } 我有一个模块 bind(service).annotatedWith(Names.named(“serviceA”).to(ServiceAImpl.class); bind(service).annotatedWith(Names.named(“serviceB”).to(ServiceBImpl.class); 现在我的问题是我希望允许用户通过命令行参数动态选择运行时基础上的注入。 public static void Main(String args[]) { String option = args[0]; ….. } 我怎么能这样做? 我是否必须创建多个模块才能执行此操作?

Wicketdependency injection

我在Wicket有一个带有表单的页面,其中表单需要合作者完成其工作。 合作者注入(我正在使用Guice),看起来像: public class RegistrationPage extends WebPage { @Inject public RegistrationPage(RegistrationService service) { this.service = service; add(new RegistrationForm()); } private class RegistrationForm extends Form { public RegistrationForm() { // setup } protected void onSubmit() { service.doSomething(); } } } 我不喜欢将RegistrationService注入到RegistrationPage中的想法,因为它只是需要它的RegistrationForm。 我可以更改RegistrationForm以接收RegistrationService: public RegistrationForm(RegistrationService service) { this.service = service; } 并从RegistrationPage中删除该字段,但仍然使用RegistrationPage进行传递。 我想我要问的是这样做的最佳做法是什么? 这样做可以,或者将RegistrationForm本身注入到页面中可能更好: public class RegistrationPage […]

Guice相当于Spring的@Autowire实例列表

spring的时候我这样做: @Autowire List myInterfaces; 那么这个列表将由实现MyInterface所有bean填充。 我没有创建List类型的bean。 我在Google Guice中寻找这种行为。 Sofar我去了: Multibinder myInterfaceBinder = MultiBinder.newSetBinder(binder(), MyInterface.class); 现在,如果我有一个实现MyInterface的bean并将其绑定,请通过: bind(MyInterfaceImpl.class).asEagerSingleton(); 它不会包含在我的multibinder中。 我需要补充一下: myInterfaceBinder.addBinding.to(MyInterfaceImpl.class); 这比Spring提供的要复杂一些。 所以我很惊讶我是不是以错误的方式使用它。 那么有更简单的方法来实现这一目标吗?

如何在web.xml或Guice servlet模块中排除/重定向某些url模式?

我需要使用url模式”/*”为我的主应用程序提供服务,以便此模式与Servlet匹配。 我遇到的问题是现在位于“/css/all.css”,“/ images /”等的所有css文件和图像都经过这个Servlet,这是不可取的。 我希望直接访问这些文件。 处理这种情况的更好方法是什么? 注意:我使用Guice的Servlet模块来配置模式。 谢谢!

如何在dropwizard上使用guice自动连接HibernateBundle?

我试图用guice / dropwizard配置hibernatebundle并需要帮助。 我使用hubspot / dropwizard-guice / 0.7.0第三方库以及dropwizard lib。 下面的代码显然不会工作,需要帮​​助才能搞清楚。 我如何重写这个,以便hibernatebundle和最终的会话工厂自动注入任何需要它的bean。 MyApplication.java public class MyApplication extends Application { private final HibernateBundle hibernateBundle = new HibernateBundle(MyModel.class) { @Override public DataSourceFactory getDataSourceFactory(MyAppConfiguration configuration) { return configuration.getDataSourceFactory(); } }; @Override public void initialize(Bootstrap bootstrap) { bootstrap.addBundle(hibernateBundle); // ??? bootstrap.addBundle( GuiceBundle.newBuilder() .addModule(new MyAppModule()) .enableAutoConfig(getClass().getPackage().getName()) .setConfigClass(MyAppConfiguration.class) .build() ); } } […]

Guice:Singleton.class和@Singleton之间的差异

在Guice,有什么区别: // Inside your AbstractModule subclass: @Override public void configure() { bind(Service.class).to(ServiceImpl.class).in(Singleton.class); } 和: @Override public void configure() { bind(Service.class).to(ServiceImpl.class); } @Provides @Singleton public ServiceImpl providesService() { return new ServiceImpl(); } 它们都是一样的吗? 你什么时候使用一个? 提前致谢。

绑定@Provides方法作为渴望的单例

我想使用@Provides注释的方法将绑定@Provides为一个热切的单例。 我发现了错误216 ,这表明这是不可能的,但没有明确提及@Provides注释。 我目前有一个课程要求eager单身人士及时成为单身人士,但这不是一个非常好的解决方案。 public class LogicModule extends AbstractModule { @Override public void configure() { bind(SomeDep.class); bind(MyWorkaround.class).asEagerSingleton(); } // cannot add eager requirement here @Provides @Singleton Logic createLogic(SomeDep dep) { return LogicCreator.create(dep); } private static class MyWorkaround { @Inject Logic logic; } } 我可以更改评论附近的某些内容,使解决方法类过时吗?

Guice代理支持循环依赖

我在启动时的代码中遇到以下错误: 尝试代理com.bar.Foo来支持循环依赖,但它不是一个接口。 这种代理究竟是如何工作的? 如果我只是在接口后面抛出足够的类,一切都会好吗? (我知道循环依赖通常是代码味道,但我认为在这种情况下它是可以的。)

Javagenerics错误:命令行编译器中的不可转换类型

我有一些使用generics的Guice绑定代码,它可以从Eclipse的编译器编译和编译,但不能从Java(命令行)编译器编译。 我升级到最新的(1.7.0_01)Java SDK但仍然收到以下错误。 [error] …\BindCategorySelectorActivity.java:42: error: inconvertible types [error] (Class<? extends ListAdapterDataProvider<Row>>) CategoryDataProvider.class); [error] ^ [error] required: Class<? extends ListAdapterDataProvider<Row>> [error] found: Class [error] 1 error [error] {file:/…/compile:compile: javac returned nonzero exit code 相关代码: public interface Category extends DatabaseItem {} public class CategoryDataProvider implements ListAdapterDataProvider<Row> {} public class BindListViewHandlerWithSpecificProvider extends AbstractModule { public BindListViewHandlerWithSpecificProvider( Class<? […]

使用Hibernate和Guice管理JavaSE中的事务

我正在编写一个使用GWT,Hibernate和Google Guice(使用GIN)的相当简单的应用程序。 我想要做的是使用外部管理器管理事务(比如在Spring中使用@Transactional ),而不是使用EntityManager#getTransaction 。 我尝试使用@Transactional ,但它似乎对我不起作用。 我已经使用Providers注入了EntityManager,如下所示: /* import stuff */ public class DbProvider implements Provider { public EntityManager get() { EntityManagerFactory emf = Persistence.createEntityManagerFactory(“persdb”); return emf.createEntityManager(); } } 在手动管理事务时,它似乎正常工作。 我希望自动管理事务,也可以使用DBUnit进行自动化测试。 有谁知道如何解决这个问题?