Tag: dependency injection

将logging仪作为单件使用是一种好的做法吗?

我有一个习惯将logging器传递给构造函数,如: public class OrderService : IOrderService { public OrderService(ILogger logger) { } } 但是这很烦人,所以我用了一段时间的这个属性: private ILogger logger = NullLogger.Instance; public ILogger Logger { get { return logger; } set { logger = value; } } 这也越来越讨厌 – 这不是干燥的,我需要在每个class都重复这个。 我可以使用基类,但是再次 – 我使用Form类,所以需要FormBase,等等。所以我认为,与ILogger暴露单身人士会有什么缺点,所以很想知道在哪里得到logging器: Infrastructure.Logger.Info("blabla"); 更新:正如Merlyn正确注意到的,我应该提到,在第一个和第二个例子中,我使用DI。

战略模式和dependency injection之间有什么区别?

策略模式和dependency injection都允许我们在运行时设置/注入对象。 战略模式和dependency injection之间有什么区别?

如何在dependency injection中使用log4net

我试图找出什么是正确的模式和使用log4net是dependency injection框架。 Log4Net使用ILog接口,但需要我打电话 LogManager.GetLogger(Reflection.MethodBase.GetCurrentMethod().DeclaringType) 在每个类或方法中,我需要logging信息。 这似乎违背了IoC的原则,并配合我使用Log4Net。 我应该不知何故把某个地方的另一层抽象层? 此外,我需要logging像当前用户名这样的自定义属性: log4net.ThreadContext.Properties["userName"] = ApplicationCache.CurrentUserName; 我怎么能封装这个,所以我不必记得每次都这样做,仍然保持当前正在logging的方法。 我应该做这样的事情还是我完全错过了标记? public static class Logger { public static void LogException(Type declaringType, string message, Exception ex) { log4net.ThreadContext.Properties["userName"] = ApplicationCache.CurrentUserName; ILog log = LogManager.GetLogger(declaringType); log.Error(message, ex); } }

什么是javax.inject.named注释应该用于?

我想了解javax.inject包,我不清楚javax.inject.Named注释应该用于什么。 Javadoc没有解释它背后的想法。 Javadoc位于http://download.oracle.com/javaee/6/api/javax/inject/Named.html 我正在使用Spring 3.0来编写一些示例程序,通过将@Named放在一个bean上,似乎将它添加到bean工厂,但Javadoc描述是如此的轻,我不知道这是标准行为还是Spring特定的行为。 我的问题是: @Named和@Qualifier什么区别? 你应该如何告诉运行系统一个类应该在其他类中注入什么注释呢? 在Spring中相当于@Component ? 更新1有一个关于@Named和@Qualifier关于@Named和@Qualifier http://java.dzone.com/articles/java-ee6-cdi-named-components的精彩解释,谢谢@xmedeko链接到它下面的评论。

使用ASP.NET Core DI解决实例

如何使用ASP.NET Core MVC内置dependency injection框架手动parsingtypes? 设置容器很简单: public void ConfigureServices(IServiceCollection services) { // … services.AddTransient<ISomeService, SomeConcreteService>(); } 但是,如何解决ISomeService而不执行注入? 例如,我想要这样做: ISomeService service = services.Resolve<ISomeService>(); IServiceCollection中没有这样的方法。

SpringValue语言(SpEL)与@Value:美元与哈希($与#)

对于何时使用${…}与#{…}相比,我有点困惑。 Spring的文档只使用#{…} ,但是有很多使用${…}的例子。 此外,当我开始使用SpEL时,我被告知使用${…}并且工作正常。 对于那些感到困惑的人来说,我将如何使用它会是一个例子 @Component public class ProxyConfiguration { @Value("${proxy.host}") private String host; @Value("${proxy.port}") private String port; : } 和一些财产档案: proxy.host=myproxy.host proxy.port=8000 我的问题是: 有什么不同或是一样的? 是弃用的一个版本,所以我应该使用另一个?

Symfony 2 EntityManager注入服务

我创build了自己的服务,我需要注入EntityManager的教条,但是我没有看到__construct()在我的服务上被调用,并且注入不起作用。 这里是代码和configuration: <?php namespace Test\CommonBundle\Services; use Doctrine\ORM\EntityManager; class UserService { /** * * @var EntityManager */ protected $em; public function __constructor(EntityManager $entityManager) { var_dump($entityManager); exit(); // I've never saw it happen, looks like constructor never called $this->em = $entityManager; } public function getUser($userId){ var_dump($this->em ); // outputs null } } 这是我的包中的services.yml services: test.common.userservice: class: Test\CommonBundle\Services\UserService […]

重新打开并添加依赖到一个已经引导的应用程序

有没有办法将后期dependency injection已经引导的angular度模块? 这是我的意思: 假设我有一个站点范围的angular应用,定义为: // in app.js var App = angular.module("App", []); 并在每一页: <html ng-app="App"> 稍后,我将重新打开应用程序,根据当前页面的需求添加逻辑: // in reports.js var App = angular.module("App") App.controller("ReportsController", ['$scope', function($scope) { // .. reports controller code }]) 现在,说这些按需的逻辑之一也需要自己的依赖(如ngTouch , ngAnimate , ngResource等)。 我如何将它们附加到基本应用程序? 这似乎不工作: // in reports.js var App = angular.module("App", ['ui.event', 'ngResource']); // <– raise error when App […]

AngularJS种子:将JavaScript放入单独的文件(app.js,controllers.js,directives.js,filters.js,services.js)

我正在使用angular种子模板来构build我的应用程序。 最初,我把所有的JavaScript代码放在一个文件main.js 。 这个文件包含了我的模块声明,控制器,指令,filter和服务。 这样的应用程序工作正常,但我担心可扩展性和可维护性,因为我的应用程序变得越来越复杂。 我注意到angular-seed模板对每个模板都有单独的文件,所以我试图将我的代码从单个main.js文件分发到这个问题的标题中提到的每个其他文件中,并在app/jsfindapp/js目录的angular种子模板。 我的问题是:如何pipe理依赖关系以使应用程序正常工作? 这里find的现有文档在这方面不是很清楚,因为每个给出的例子都显示了一个JavaScript源文件。 我所拥有的一个例子是: app.js angular.module('myApp', ['myApp.filters', 'myApp.services', 'myApp.controllers']); controllers.js angular.module('myApp.controllers', []). controller('AppCtrl', [function ($scope, $http, $filter, MyService) { $scope.myService = MyService; // found in services.js // other functions… } ]); filters.js angular.module('myApp.filters', []). filter('myFilter', [function (MyService) { return function(value) { if (MyService.data) { // test to ensure service is […]

Google Guice与PicoContainer进行dependency injection

我的团队正在研究dependency injection框架,并试图在使用Google-Guice和PicoContainer之间做出决定。 我们正在寻找我们的框架中的几件事情: 一个小的代码足迹 – 我的意思是一个小的代码足迹是我们不希望在我们的代码库中随处存在dependency injection代码。 如果我们需要重构道路,我们希望它尽可能简单。 性能 – 创build和注入对象时每个框架有多less开销? 易用性 – 是否有很大的学习曲线? 我们必须编写一些代码来获得简单的工作吗? 我们希望有尽可能less的configuration。 社区规模 – 较大的社区通常意味着项目将继续保持。 我们不想使用一个框架,并且必须修复我们自己的错误;)我们的任何问题都可以(希望)由框架的开发者/用户社区来回答。 这两个框架与所列标准的比较将不胜感激。 任何有助于比较两者的个人经验也是非常有帮助的。 免责声明:如果我提出一个与本次讨论无关的问题,我相当注意dependency injection,所以请原谅我的小心。