草庐IT

java - 工厂模式 : Validating input when creating a bean (Guice/Guava)

我正在编写一个新应用,使用Guice进行依赖注入(inject),并使用Guava的先决条件进行属性验证。我正在使用工厂模式根据外部输入创建bean。问题是,验证输入的首选方式是什么?(在可维护性、清晰度等方面)让我们假设这些类:Bean.javapublicinterfaceBean{publicObjectgetFoo();}BeanImpl.javapublicclassBeanImplimplementsBean{privatefinalObjectfoo;publicBeanImpl(Objectparam){foo=param;}@OverridepublicStringg

java - Guice:如何为所有类型绑定(bind)泛型?

假设我的代码中经常重复以下模式:classA{@InjectpublicA(Listlist){//code}}我要绑定(bind)所有List至ArrayList.我知道我可以使用TypeLiterals绑定(bind)显式原始类型,例如List,但是无论如何都可以对所有类型执行此操作吗?基本上,这段代码应该不会失败,因为我没有显式绑定(bind)List:injector.getInstance(newKey>(){}); 最佳答案 这在Guice中是不可能的。在内部Guice只不过是一个HashMap>,其中一个Key表示可选

java - 带有自定义注释的 Guice 动态注入(inject)

我有一些资源,但我不能迭代它并绑定(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;@

java - Guice/DI 和混合注入(inject)和运行时传入的参数

我有这样一种情况,当我初始化我的一些类时,我需要注入(inject)一些字段(例如对工厂的引用等),而其他一些是动态的并在运行时创建(例如用户名等)。如何使用GUICE框架构建此类对象?简单地将我需要注入(inject)的字段注释为@Inject不起作用,因为在使用构造函数创建对象时似乎没有设置它们。例如:classC{@InjectprivateFactoryClasstoBeInjected;privateConfigurationFieldpassedIn;publicC(ConfigurationFieldpassedIn){this.passedIn=passedIn;}}如

java - Google Guice 不就是另一个工厂吗?

我想实例化一个用户帐户。我可以使用这样的工厂:publicclassUserFactory{publicUsernewUser(UserTypetype){if(type==UserType.FREE)returnnewFreeUser();}}Useruser=UserFactory.newUser(UserType.FREE);//UserType.FREEisanenum现在如果我使用GoogleGuice,我必须编写一个“模块”:publicclassUserModuleextendsAbstractModule{publicvoidSetType(UserTypetype){

java - 是否可以将 Spring MVC 与 Guice 集成?

对于SpringMVC的专家来说,这可能是一个愚蠢的问题,但我不知道它是如何工作的,这就是我问的原因。同一个问题的另一种说法:SpringMVC中是否存在对SpringDI的依赖? 最佳答案 我很确定没有IOC容器就无法使用SpringMVC。例如:SpringMVC的核心是DispatcherServlet。.DispatcherServlet使用这些方法初始化自身:/***Thisimplementationcalls{@link#initStrategies}.*/@OverrideprotectedvoidonRefresh

java - 我如何让 google guice 注入(inject)自定义记录器,比如 commons-logging 或 log4j 记录器

Googleguice有一个built-inloggerbinding.但是,如果我想使用commons-logging或log4j记录器怎么办?我可以得到guice来注入(inject)由创建的日志吗LogFactory.getLog(CLASS.class)但具有与内置绑定(bind)相同的行为:Thebindingautomaticallysetsthelogger'snametothenameoftheclassintowhichtheLoggerisbeinginjected..它甚至有意义吗?或者喊我只是使用内置的javaLogger?或者只使用没有注入(inject)的c

java - 一起使用 Guice 和 JMock 的最佳方式是什么?

我已经开始使用Guice对项目进行一些依赖注入(inject),主要是因为我需要在单元测试之外的一层注入(inject)模拟(目前使用JMock),这使得手动注入(inject)非常尴尬。我的问题是引入模拟的最佳方法是什么?我目前拥有的是在满足依赖关系的单元测试中创建一个新模块,并将它们与如下所示的提供程序绑定(bind):publicclassJMockProviderimplementsProvider{privateTmock;publicJMockProvider(Tmock){this.mock=mock;}publicTget(){returnmock;}}在构造函数中传递

java - Guice 注入(inject) servlet

我是GoogleGuice框架的新手,我有一个关于注入(inject)guiceservlet和使用RequestScope的问题。好吧,让我从我的代码中举出一些例子来说明问题。我有一个bean类,例如Bean..@RequestScopepublicclassBean{privateStringuser;privateStringpass;//constructorwhichis@inject//gettersandsetters}我这里有一个servlet@SingletonpublicclassMainServletextendsHttpServlet{doGet(HttpSer

java - Guice 2.0 的 ClassNotFoundException

下面的代码使用Guice2.0会产生一个错误。使用Guice1.0一切都很好。JDK是Java6update15。publicclassApp{publicstaticvoidmain(String[]args){Guice.createInjector(newAbstractModule(){@Overrideprotectedvoidconfigure(){//justtesting}});}}错误是:Exceptioninthread"main"java.lang.NoClassDefFoundError:[Lorg/aopalliance/intercept/MethodInt