Tag: dependency injection

在使用Ninject OWIN中间件的OWIN启动中dependency injectionUserStore

使用OWIN请求pipe道创buildApplicationUserManager时,使用dependency injection创build自定义UserStore时遇到问题。 背景 我正在尝试将我们的Web应用程序中的用户function从使用SimpleMembership迁移到新的ASP.NET标识。 当启动一个新的MVC 5项目时,单页应用程序的默认实现使用ASP.Identity,使用Entity Framework来实现UserStorefunction。 在我的例子中,我们已经使用NHibernate作为ORM,并且使用ninject来实现工作模式单元,以便每个请求有一个NHibernate会话,并且我想让ASP.Identity和我们现有的框架一起工作。 为此,我创build了一个自定义的UserStore,可以通过注入相关的存储库/ nhibernate会话等来创build。然后可以使用Ninject注入到Controller的构造函数中,而不是使用默认实现的GetOwinContextfunction。 为了做到这一点,我在Startup的ConfigureAuth(IAppBuilder应用程序)方法中注释了以下行,默认情况下它会创buildUserManager类: // app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create); 相反,我使用在安装Ninject.Web.Common.Webhost nuget包时创build的NinjectWebCommon来创build相关的绑定。 这个实现对一些UserManager操作可以正常工作,但是对于某些操作(如ResetPasswordAsync),由于未调用默认的ApplicationUserManager实现,因此失败,因此UserManager类中的UserTokenProvider从不设置: public static ApplicationUserManager Create(IdentityFactoryOptions<ApplicationUserManager> options, IOwinContext context) { var manager = new ApplicationUserManager(new UserStore<ApplicationUser>(context.Get<ApplicationDbContext>())); // Configure validation logic for usernames manager.UserValidator = new UserValidator<ApplicationUser>(manager) { AllowOnlyAlphanumericUserNames = false, RequireUniqueEmail = true }; // Configure validation logic for passwords manager.PasswordValidator […]

将bean注入枚举

我有DataPrepareService为报表准备数据,我有一个Enum与报表types,我需要注入到Enum的ReportService或从枚举访问ReportService。 我的服务: @Service public class DataPrepareService { // my service } 我的枚举: public enum ReportType { REPORT_1("name", "filename"), REPORT_2("name", "filename"), REPORT_3("name", "filename") public abstract Map<String, Object> getSpecificParams(); public Map<String, Object> getCommonParams(){ // some code that requires service } } 我试图使用 @Autowired DataPrepareService dataPrepareService; ,但它没有工作 我怎样才能把我的服务注入枚举?

为什么$只在'angular.mock.module'函数中可用,$ q只在'angular.mock.inject'函数中可用?

我正在嘲笑一个AngularJSunit testing的服务。 我正在使用$provide服务来replace模拟出来的“真实”服务(这是一个可用的plunker脚本 ): describe('My Controller', function () { var $scope; var $provide; beforeEach(angular.mock.module('myApp')); beforeEach(angular.mock.module(function (_$provide_) { $provide = _$provide_; })); beforeEach(angular.mock.inject(function($rootScope, $controller, $q){ var mockMyService = { getAll : function() { var deferred = $q.defer(); deferred.resolve([ { itemText: "Foo" }, { itemText: "Bar" } ]); return deferred.promise; } }; $provide.value('myService', mockMyService); $scope = $rootScope.$new(); […]

Spring属性(属性占位符)自动assembly

我在我的applicationContext.xml <context:property-placeholder location="classpath*:*.properties" /> <bean id="clientPreferencesManager" class="pl.bildpresse.bildchat2.business.ClientPreferencesManager" > <property name="clientApiUrl" value="${clientapi.url}" /> </bean> 是否可以通过autowire来做同样的事情? 就像是 : @Autowired @Qualifier("${clientapi.url}") public void setClientApiUrl(String clientApiUrl) { this.clientApiUrl = clientApiUrl; }

dependency injection和Mocking框架之间的区别(Ninject vs RhinoMock或Moq)

那么Ninject和RhinoMock或moq之类的模拟框架有什么区别呢? 我谷歌,但它仍然不清楚。

鉴于ES2015,dependency injection和库抽象,2016年我的理想模块应该是什么样子?

如果不是这样的话,首先我要全部写上我所有的模块 import A from './a.js'; var B = function(){ //use A }; export default B; 然后使用编译器将其构build为某种浏览器或服务器格式。 但是我的一个问题是在import明确./a.js 。 我明白为什么规范是这样做的1 ,赞成静态分析 。 但是有两个非常实际的原因,为什么在模块的文件名和path中烘焙都很麻烦。 正如已经在这里提出的那样 ,当从项目到项目频繁地回收模块时,您很可能无法在项目树中保持一致的path 。 import myModule from './../../vendor/lib/dist/mod.js'到一个模块的代码,这样的导入调用不会让我感觉到未来。 除了path本身之外,指定文件名还会将您closures。 像这样的东西似乎是无辜的: import $ from 'vendor/jquery.js' 但是我想用Zepto代替jQuery呢? 我发现抽象,特别是在供应商库上的抽象,在处理大型代码库,自以为是的开发者和不断变化的JavaScript生态系统时非常有用。 我今天可能要导入React作为我的组件库,但明天呢? 此外,如果我要在客户端和服务器上使用相同的模块,但是我需要不同版本的从属库? 我坚持强有力(但明确而一致)的抽象。 通常,抽象已经采取了某种命名空间的forms。 我幻想一下这个: //BAD: Bakes React into my component modules import ComponentLib from './React.js'; //GOOD: Leaves […]

构造器注入:有多less依赖关系太多?

我一直在使用手动构造函数注入DI。 我注意到的一件事是我的构造函数开始变得相当长。 我有一个课,取决于一堆小物体 – 有时在6到10之间的任何地方。 随着我继续把我的申请分成小块,我可以看到这个数字随着时间的推移而增加。 这是个常见的问题吗? 显然这将取决于项目的很多。 但是,基本的问题是这样的: 你什么时候开始对某个class级的依赖数量感到不舒服? 什么是你用来减less这些依赖的一些策略?

了解DI框架的需求

这可能是一个天真的问题。 我目前正在学习Spring框架和dependency injection 。 虽然DI的基本原理很容易理解,但为什么需要一个精细的框架来实现呢? 考虑以下: public abstract class Saw { public abstract void cut(String wood); } public class HandSaw extends Saw { public void cut(String wood) { // chop it up } } public class ChainSaw extends Saw { public void cut(String wood) { // chop it a lot faster } } public class […]

何时使用dependency injection

在过去的几天中,我有一种特定的感觉,那就是dependency injection应该被称为“我无法下定决心” – 模式。 我知道这可能听起来很愚蠢,但实际上这是关于为什么我应该使用dependency injection(DI)的原因。 通常情况下,我应该使用DI来实现更高级别的松耦合,并且我会得到这个部分。 但真的…一旦我的select已经落在MS SQL或MySQL上,我多久才能更改一次数据库。很less有正确的? 有没有人有一些非常有说服力的理由为什么DI是要走的路?

简单的喷油器vs Hiro vs Autofac

我是DI和IoC的新手,我试图决定要学习哪个IoC容器。 我已经看到几个性能比较 ,其中三个容器引用似乎performance非常好。 但是,我没有发现包含Hiro或Simple Injector的function比较。 Autofac的社区似乎是最大的,但Hiro和简单的喷油器在基准testing中的速度非常快,特别是简单的喷油器声称非常容易学习。 也就是说,我不想学习一个,因为function集是有限的,所以不得不切换到另一个。 因为这个原因,我倾向于Autofac,因为它相当成熟,function齐全( 这里和这里都有很好的文章),也是最快的IoC容器之一。 有没有人有三个这些容器中的至less两个的经验? 你能提供任何function比较?