如果没有其他条件,我如何选择依赖关系。
假设我有一个接口:
public interface A{
String doSomething(String req);
}
有两种服务工具A
:
@Component
public class FirstImpl implements A{
@override
String doSomething(String req){
return "something";
}
}
和:
@Component
public class SecondImpl implements A{
@override
String doSomething(String req){
return "something";
}
}
现在,我创建一个AdapterService类:
@Component
public class AdapterService{
@Autowired
private FirstImpl first;
@Autowired
private SecondImpl second;
public getService(String name){
if("name".equals("First")){
return first;
}else if("name".equals("Second")){
return second;
}
}
}
现在调用实现:
@Service
public class BusinessService{
@Autowired
private AdapterService adapterService;
void doSomething(String name,String req){
return adapterService.getService(name).doSomething();
}
}
现在,如果我需要创建另一个实现A的类,则需要在ServiceAdapter类中添加条件。像"Third".equals(name)
返回另一个注入服务。对于每个新服务,需要添加其他条件,然后注入相应的服务。我如何避免这种Adapter类。Spring从名称中动态选择依赖关系。
如果您有权访问applicationContext
对象,则可以致电
applicationContext.getBean(名称)
并完全避免使用ServiceAdapter类。唯一的事情是您需要将那些bean放入容器中。
试试这个:
@Component
public class AdapterService{
@Autowired
private ApplicationContext applicationContext;
public A getService(String name){
return applicationContext.getBean(name,A.class);
}
}
在我们的项目中,我们使用具有依赖项的库,例如: 作为安全修复的一部分,我们假设使用更高版本的依赖项。通用编解码器:通用编解码器:1.14。在不升级expo-file-system的情况下,有没有办法告诉gradle/maven我们要用一个特定版本的commons-codec:commons-codec?
Yarn supports selective version resolutions, which lets you define custom package versions inside your dependencies through the resolutions field in your package.json file. Normally, this would requir
编写的PHP扩展需要需要依赖另外一个扩展,在PHP-X中可以调用Extension->require来实现。 PHPX_EXTENSION() { Extension *ext = new Extension("test", "0.0.1"); ext->require("swoole"); ext->require("sockets"); return ext;
依赖关系 这是一个非常轻量级的模块,没有其他依赖项。希望大家在JVM或Android上使用以太坊的RLP编码的项目时会选择使用这个模块,而不再编写自己的实现。
依赖关系 ABI一个非常轻量级的模块,唯一的第三方依赖是 Bouncy Castle,用于hash加密 (Spongy Castle on Android)。 最后希望java和安卓开发者,在JVM或Android上有以太坊ABI合作的项目时会选择使用这个模块,而不是再编写自己的实现。
我需要创建一个插件,提供一个交互式任务,调用方式如下: 在这里,参数应该是用于分析的项目中的配置的名称。 然而,这种分析需要从配置中计算一些数据,这可能很昂贵。因此,我想缓存这些数据,但是,很自然,在配置内容发生变化(例如用户添加了依赖项)的情况下,缓存会失效。理想情况下,我会利用内置的Gradle任务依赖机制,它将跟踪任务依赖关系,并允许不运行计算,除非其输入发生变化。 这是我想出的解决方案,但
问题内容: 我有一个依赖关系如下: 当我部署一切正常时,这将拉下另一个引发ClassDefNotFound的依赖项。 我添加了两个依赖项,如下所示: 并且仍然面临着同样的问题,即:MVN带来下来不 我该如何解决? 编辑: 添加; 问题答案: 您可能有一个传递依赖项,另一个依赖项取决于您不需要的版本。 要获得所有直接和传递依赖关系的概述,请尝试: mvn依赖项:树 如果您发现同一依赖项的不同版本之间
找不到类似的问题,所以提出这个问题。抱歉,如果重复。 试图在spring boot(1.5.9版)应用程序中使用log4j2- 但不知怎的,spring boot仍然在寻找logback依赖(mvn依赖树中处处排除logback依赖)-