Tag: 服务定位器

Spring ServiceLocator还是纯工厂模式?

99%的依赖关系通过@Autowired Spring注释来管理DI模式。 然而,在特定情况下,我无法确定在运行时使用哪个实现。 最着名的情况是解析器的多重实现。 第一个解决方案是使用多个@Autowired(丑陋模式) Interface Parser { T parse(); } @Component(“JsonParser”) class JsonParser implements Parser { … } @Component(“XmlParser”) class XmlParser implements Parser { … } class MyService { @Autowired @Qualifier(“XmlParser”) Parser xmlParser; @Autowired @Qualifier(“JsonParser”) Parser jsonParser; … } 但是如果我有大量的实现,那是不可接受的。 第二个解决方案是使用Spring的ServiceLocator interface ParserServiceLocatorFactory { public Parser getParser(String parserName); } interface Parser { T parse(); […]

记录和dependency injection

我尝试基于Java构建和应用程序。 对于dependency injection,我使用Google Guice。 现在我想出了在应用程序期间记录一些信息的问题。 我不会以方法调用等方式谈论一般日志记录。我知道AOP ,我可以像方法调用跟踪那样做。 我要找的是手动记录。 我需要一些方法来记录我的应用程序中的每个类。 所以我想到了两个选择: 通过使用Guice注入框架通过构造函数(或者setter或private …)来获取记录器,但感觉就像将记录问题真正添加到每个类并污染我的构造函数 在我想要调用日志的方法中使用全局服务定位器。 呃,但所有DI粉丝都会因为这样做而讨厌我 那么从实际的角度来看,最好的方法是什么?