guice-asynchronous:异步方法的 guice 扩展-源码

上传者: 42099151 | 上传时间: 2021-07-26 20:11:44 | 文件大小: 120KB | 文件类型: ZIP
消息 代码完成: 关于 该项目的目标是扩展 Guice 的 AOP 功能并支持异步方法调用。 要异步方法,用户只需使用@Asynchronous注释标记方法。 有了这个,我们抽象了管理异步调用的横切关注点,并减少了伴随异步调用而产生的代码膨胀量。 问题 Guice 是 Google 推出的一个简单的依赖注入框架,深受好评和广泛使用。 不幸的是,它的简单性带来了一些限制。 Guice 的 AOP 允许用户围绕操作方法拦截器实现堆叠。 在这种情况下,一组拦截器将包​​装一个方法调用,以便一个拦截器调用下一个(在堆栈中),直到最终调用该方法。 之后,拦截器继续执行返回到它之前的拦截器(备份堆栈)。 问题是,从拦截器内部,没有干净的方法将调用卸载到其他线程。 卸载任务并返回到调用者会导致堆栈跳出其假定的顺序。 实际上,当从另一个线程调用下一个拦截器时,就会执行错误的拦截器。 解决方案 我们的解决

文件下载

资源详情

[{"title":"( 77 个子文件 120KB ) guice-asynchronous:异步方法的 guice 扩展-源码","children":[{"title":"guice-asynchronous-master","children":[{"title":"images","children":[{"title":"MethodInterceptor.png <span style='color:#111;'> 17.87KB </span>","children":null,"spread":false},{"title":"method_interceptor.png <span style='color:#111;'> 18.83KB </span>","children":null,"spread":false}],"spread":true},{"title":"guice-asynchronous","children":[{"title":"src","children":[{"title":"main","children":[{"title":"assembly","children":[{"title":"zip.xml <span style='color:#111;'> 1.08KB </span>","children":null,"spread":false}],"spread":true},{"title":"resources","children":[{"title":"LICENSE.TXT <span style='color:#111;'> 11.09KB </span>","children":null,"spread":false}],"spread":true},{"title":"java","children":[{"title":"org","children":[{"title":"ivcode","children":[{"title":"guice","children":[{"title":"asynchronous","children":[{"title":"GuiceAsynchronous.java <span style='color:#111;'> 4.27KB </span>","children":null,"spread":false},{"title":"AsynchronousAnnotatedBindingBuilder.java <span style='color:#111;'> 364B </span>","children":null,"spread":false},{"title":"AsynchronousPrivateBinder.java <span style='color:#111;'> 1.11KB </span>","children":null,"spread":false},{"title":"helpers","children":[{"title":"exceptions","children":[{"title":"CallbackExceptions.java <span style='color:#111;'> 1.53KB </span>","children":null,"spread":false},{"title":"FailFastHandler.java <span style='color:#111;'> 1.22KB </span>","children":null,"spread":false},{"title":"FailFast.java <span style='color:#111;'> 4.06KB </span>","children":null,"spread":false},{"title":"CallbackExceptionsHandler.java <span style='color:#111;'> 2.37KB </span>","children":null,"spread":false},{"title":"ExceptionsInterceptor.java <span style='color:#111;'> 3.40KB </span>","children":null,"spread":false}],"spread":false},{"title":"utils","children":[{"title":"GuiceAsynchronousUtils.java <span style='color:#111;'> 625B </span>","children":null,"spread":false},{"title":"InstallerAsynchronousModule.java <span style='color:#111;'> 529B </span>","children":null,"spread":false}],"spread":false},{"title":"callbacks","children":[{"title":"FutureCallback.java <span style='color:#111;'> 7.49KB </span>","children":null,"spread":false},{"title":"Callback.java <span style='color:#111;'> 1.24KB </span>","children":null,"spread":false}],"spread":false}],"spread":false},{"title":"AsynchronousBinder.java <span style='color:#111;'> 1.72KB </span>","children":null,"spread":false},{"title":"AsynchronousBindingBuilder.java <span style='color:#111;'> 936B </span>","children":null,"spread":false},{"title":"AsynchronousLinkedBindingBuilder.java <span style='color:#111;'> 435B </span>","children":null,"spread":false},{"title":"AsynchronousFactoryBuilder.java <span style='color:#111;'> 205B </span>","children":null,"spread":false},{"title":"AsynchronousModule.java <span style='color:#111;'> 783B </span>","children":null,"spread":false},{"title":"Asynchronous.java <span style='color:#111;'> 1.12KB </span>","children":null,"spread":false},{"title":"internal","children":[{"title":"asynchronousclass","children":[{"title":"AsynchronousClassFactory.java <span style='color:#111;'> 1.08KB </span>","children":null,"spread":false},{"title":"AsynchronousClassFactoryImpl.java <span style='color:#111;'> 6.01KB </span>","children":null,"spread":false},{"title":"AsynchronousMethod.java <span style='color:#111;'> 1.78KB </span>","children":null,"spread":false},{"title":"AsynchronousClass.java <span style='color:#111;'> 1.61KB </span>","children":null,"spread":false},{"title":"AsynchronousConstructor.java <span style='color:#111;'> 1.47KB </span>","children":null,"spread":false}],"spread":false},{"title":"proxy","children":[{"title":"factory","children":[{"title":"FactoryProxyProvider.java <span style='color:#111;'> 865B </span>","children":null,"spread":false},{"title":"IndexMapFactory.java <span style='color:#111;'> 2.43KB </span>","children":null,"spread":false},{"title":"FactoryInvocationHandler.java <span style='color:#111;'> 1.45KB </span>","children":null,"spread":false}],"spread":false},{"title":"StacktracePruner.java <span style='color:#111;'> 2.08KB </span>","children":null,"spread":false},{"title":"BasicNoOp.java <span style='color:#111;'> 852B </span>","children":null,"spread":false},{"title":"EnhancerData.java <span style='color:#111;'> 1.38KB </span>","children":null,"spread":false},{"title":"EnhancerFactoryImpl.java <span style='color:#111;'> 6.00KB </span>","children":null,"spread":false},{"title":"AsynchronusInterceptor.java <span style='color:#111;'> 2.59KB </span>","children":null,"spread":false},{"title":"EnhancerFactory.java <span style='color:#111;'> 898B </span>","children":null,"spread":false},{"title":"EnhancerProvider.java <span style='color:#111;'> 3.71KB </span>","children":null,"spread":false},{"title":"InterceptorStackCallback.java <span style='color:#111;'> 3.09KB </span>","children":null,"spread":false},{"title":"AsyncTaskException.java <span style='color:#111;'> 1.08KB </span>","children":null,"spread":false},{"title":"DirectInterceptor.java <span style='color:#111;'> 1.11KB </span>","children":null,"spread":false}],"spread":false},{"title":"utils","children":[{"title":"MyThreadFactory.java <span style='color:#111;'> 2.09KB </span>","children":null,"spread":false},{"title":"GuiceAsyncUtils.java <span style='color:#111;'> 4.77KB </span>","children":null,"spread":false},{"title":"AssistedProvider.java <span style='color:#111;'> 984B </span>","children":null,"spread":false},{"title":"InternalClasses.java <span style='color:#111;'> 2.10KB </span>","children":null,"spread":false},{"title":"TypeLiteralFactory.java <span style='color:#111;'> 1.71KB </span>","children":null,"spread":false}],"spread":false},{"title":"binding","children":[{"title":"AnnotationScopeBinding.java <span style='color:#111;'> 1.25KB </span>","children":null,"spread":false},{"title":"InstanceScopeBinding.java <span style='color:#111;'> 1.15KB </span>","children":null,"spread":false},{"title":"AsynchronousBinding.java <span style='color:#111;'> 3.40KB </span>","children":null,"spread":false},{"title":"Utils.java <span style='color:#111;'> 1.77KB </span>","children":null,"spread":false},{"title":"FactoryBinding.java <span style='color:#111;'> 2.39KB </span>","children":null,"spread":false},{"title":"EagerSingletonScopeBinding.java <span style='color:#111;'> 1.01KB </span>","children":null,"spread":false},{"title":"FactoryBindingModule.java <span style='color:#111;'> 3.43KB </span>","children":null,"spread":false},{"title":"Binding.java <span style='color:#111;'> 761B </span>","children":null,"spread":false},{"title":"BindingFactory.java <span style='color:#111;'> 1.60KB </span>","children":null,"spread":false},{"title":"AsynchronousBindingModule.java <span style='color:#111;'> 2.02KB </span>","children":null,"spread":false},{"title":"ConstructorProvidersModule.java <span style='color:#111;'> 1.50KB </span>","children":null,"spread":false},{"title":"EnhancerDataModule.java <span style='color:#111;'> 703B </span>","children":null,"spread":false},{"title":"ScopeBinding.java <span style='color:#111;'> 867B </span>","children":null,"spread":false},{"title":"BindingBuilder.java <span style='color:#111;'> 289B </span>","children":null,"spread":false}],"spread":false},{"title":"processor","children":[{"title":"MyAsynchronousAnnotatedBindingBuilder.java <span style='color:#111;'> 4.73KB </span>","children":null,"spread":false},{"title":"AsyncBuilderFactory.java <span style='color:#111;'> 1.39KB </span>","children":null,"spread":false},{"title":"FactoryBindingBuilderImpl.java <span style='color:#111;'> 1.39KB </span>","children":null,"spread":false},{"title":"SourceKeyBuilderKey.java <span style='color:#111;'> 600B </span>","children":null,"spread":false},{"title":"AnnotationBuilderInstance.java <span style='color:#111;'> 565B </span>","children":null,"spread":false},{"title":"AnnotatedBuilder.java <span style='color:#111;'> 264B </span>","children":null,"spread":false},{"title":"AsynchronousBindingBuilder.java <span style='color:#111;'> 1.80KB </span>","children":null,"spread":false},{"title":"SourceKeyBuilderClass.java <span style='color:#111;'> 878B </span>","children":null,"spread":false},{"title":"AnnotationBuilderClass.java <span style='color:#111;'> 594B </span>","children":null,"spread":false},{"title":"SourceKeyBuilderType.java <span style='color:#111;'> 927B </span>","children":null,"spread":false},{"title":"SourceKeyBuilder.java <span style='color:#111;'> 303B </span>","children":null,"spread":false}],"spread":false},{"title":"modules","children":[{"title":"WrapperModule.java <span style='color:#111;'> 3.57KB </span>","children":null,"spread":false}],"spread":false},{"title":"binder","children":[{"title":"BinderWrapper.java <span style='color:#111;'> 4.21KB </span>","children":null,"spread":false},{"title":"InterceptorElement.java <span style='color:#111;'> 1.76KB </span>","children":null,"spread":false},{"title":"PrivateBinderWrapper.java <span style='color:#111;'> 1.73KB </span>","children":null,"spread":false},{"title":"AsynchronousBinderManager.java <span style='color:#111;'> 10.82KB </span>","children":null,"spread":false}],"spread":false}],"spread":false}],"spread":false}],"spread":true}],"spread":true}],"spread":true}],"spread":true}],"spread":true}],"spread":true},{"title":"pom.xml <span style='color:#111;'> 6.43KB </span>","children":null,"spread":false}],"spread":true},{"title":"README.md <span style='color:#111;'> 1.90KB </span>","children":null,"spread":false}],"spread":true}],"spread":true}]

评论信息

免责申明

【只为小站】的资源来自网友分享,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,【只为小站】 无法对用户传输的作品、信息、内容的权属或合法性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论 【只为小站】 经营者是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。
本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二条之规定,若资源存在侵权或相关问题请联系本站客服人员,zhiweidada#qq.com,请把#换成@,本站将给予最大的支持与配合,做到及时反馈和处理。关于更多版权及免责申明参见 版权及免责申明