我是Java初学者,也是IoC。如何做事:publicclassFoo{//privateBarbar;//Barisaninterfaceprivateintvar;publicFoo(){}publicvoidsetVar(intvar){this.var=var;}publicBargetBar(){if(var==1){returnnewBarImpl1();//animplemantationofBarinterface}elseif(var==2){returnnewBarImpl2();//animplemantationofBarinterface}else{retur
我有一些资源,但我不能迭代它并绑定(bind)它们,我必须使用key来请求资源。所以,我必须动态注入(inject)。我定义了一个注解@Target({METHOD,CONSTRUCTOR,FIELD})@Retention(RUNTIME)@Documented@BindingAnnotationpublic@interfaceRes{Stringvalue();//thekeyoftheresource}这样使用publicclassTest{@Inject@Res("author.name")Stringname;@Inject@Res("author.age")intage;@
我在尝试将Guice与ContainerRequestFilter结合使用时遇到一个小问题,它会抛出NullPointerException。我对RESTEasy做了一些深入研究,由于@Context注释不存在,它似乎找不到MyFilter的构造函数,在尝试实例化null构造函数时抛出NullPointerException。我的过滤器:@Provider@PreMatchingpublicclassMyFilterimplementsContainerRequestFilter{privateDependencyd;@InjectpublicMyFilter(Dependencyd)
我有这样一种情况,当我初始化我的一些类时,我需要注入(inject)一些字段(例如对工厂的引用等),而其他一些是动态的并在运行时创建(例如用户名等)。如何使用GUICE框架构建此类对象?简单地将我需要注入(inject)的字段注释为@Inject不起作用,因为在使用构造函数创建对象时似乎没有设置它们。例如:classC{@InjectprivateFactoryClasstoBeInjected;privateConfigurationFieldpassedIn;publicC(ConfigurationFieldpassedIn){this.passedIn=passedIn;}}如
我目前正在探索Guice功能并遇到了一个奇怪的行为-当我将变量声明为@Inject@Named("dragon")Dragondragon2;注入(inject)按预期工作,但是当我想将dragon2声明为接口(interface)(它实现Creature)时,我。e.@Inject@Named("dragon")Creaturedragon2;我得到一个错误未绑定(bind)带有@com.google.inject.name.Named(value=dragon)注释的warlock.rincewind.creatures.Creature的实现。这是我的提供者方法:@Named("
我以前从未使用过guice,我想在一个示例项目中试用它,该示例项目具有基于jersey的JAX-RSAPI,由服务bean支持。我遵循了本指南:http://randomizedsort.blogspot.de/2011/05/using-guice-ified-jersey-in-embedded.html并能够将其投入工作。我的设置非常简单,一个JAX-RS资源是通过Guice调用的,并且有一个字段被注释为@Inject并由Guice注入(inject):@Path("configuration")@Produces(MediaType.APPLICATION_JSON)@Sing
我想实例化一个用户帐户。我可以使用这样的工厂:publicclassUserFactory{publicUsernewUser(UserTypetype){if(type==UserType.FREE)returnnewFreeUser();}}Useruser=UserFactory.newUser(UserType.FREE);//UserType.FREEisanenum现在如果我使用GoogleGuice,我必须编写一个“模块”:publicclassUserModuleextendsAbstractModule{publicvoidSetType(UserTypetype){
对于SpringMVC的专家来说,这可能是一个愚蠢的问题,但我不知道它是如何工作的,这就是我问的原因。同一个问题的另一种说法:SpringMVC中是否存在对SpringDI的依赖? 最佳答案 我很确定没有IOC容器就无法使用SpringMVC。例如:SpringMVC的核心是DispatcherServlet。.DispatcherServlet使用这些方法初始化自身:/***Thisimplementationcalls{@link#initStrategies}.*/@OverrideprotectedvoidonRefresh
Googleguice有一个built-inloggerbinding.但是,如果我想使用commons-logging或log4j记录器怎么办?我可以得到guice来注入(inject)由创建的日志吗LogFactory.getLog(CLASS.class)但具有与内置绑定(bind)相同的行为:Thebindingautomaticallysetsthelogger'snametothenameoftheclassintowhichtheLoggerisbeinginjected..它甚至有意义吗?或者喊我只是使用内置的javaLogger?或者只使用没有注入(inject)的c
我已经开始使用Guice对项目进行一些依赖注入(inject),主要是因为我需要在单元测试之外的一层注入(inject)模拟(目前使用JMock),这使得手动注入(inject)非常尴尬。我的问题是引入模拟的最佳方法是什么?我目前拥有的是在满足依赖关系的单元测试中创建一个新模块,并将它们与如下所示的提供程序绑定(bind):publicclassJMockProviderimplementsProvider{privateTmock;publicJMockProvider(Tmock){this.mock=mock;}publicTget(){returnmock;}}在构造函数中传递