我们正在尝试将应用程序从Spring迁移到Quarkus Spring。我们可以根据需要重新编写应用程序逻辑。问题来了,因为我们正在使用共享的spring罐,这是传统的,而且数量很多。大多数spring JAR都使用@Autowired使用依赖项注入,但被注入的相应类没有@Component注释。
将用示例描述问题:
类“MyProject”属于Quarkus应用程序
public class MyProject {
@Autowired
private OtherLevelOne otherLevelOne;
public void invokeMe() {
this.otherLevelOne.call();
}
}
类OtherLevelOne和OtherLevelTwo属于依赖项spring jar。
public class OtherLevelOne {
@Autowired
private OtherLevelTwo otherLevelTwo;
public void call() {
this.otherLevelTwo.otherCall();
}
}
public class OtherLevelTwo {
public void otherCall() {
}
}
面临的问题。
During compilation of Quakrus Application we get error:
[ERROR] Failed to execute goal io.quarkus.platform:quarkus-maven-plugin:2.1.3.Final:build (quarkus-app-build) on project service-quarkus: Failed to build quarkus application: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
[ERROR] [error]: Build step io.quarkus.arc.deployment.ArcProcessor#validate threw an exception: javax.enterprise.inject.spi.DeploymentException: Found 2 deployment problems:
[ERROR] [1] Unsatisfied dependency for type OtherLevelOne and qualifiers [@Default]
尝试过的事情:为OtherLevelOne和OtherLevelTwo添加了一个生产者类。这有助于解决编译时不满意的依赖性问题,构建成功了。但现在,当OtherLevelOne的方法“调用”试图访问“OtherLevelTwo”的实例时,我们在运行时遇到了一个NullPointException。看来二级注射没有发生。Quarkus可能不支持这一点(没有一些修改,比如向依赖项JAR中的所有类添加beans.xml和@Component注释)。
@Dependent
public class ProducerClass {
@Produces
public OtherLevelOne createOtherLevelOne() {
return new OtherLevelOne();
}
@Produces
public OtherLevelTwo createOtherLevelTwo(){
return new OtherLevelTwo();
}
}
问题
谢谢
在quarkus中,不支持通过XML进行配置,因此您需要创建一个生产者方法来生成OtherLevelOne
和OtherLevelTwo
bean
我制作了自己的包装类,我希望那些使用我编译的JAR文件的人都能使用这些包装类。 这个jar文件还包含一个lib文件夹,它还有bouncy castle库,因为包装器的目的是让调用者更容易。现在我的库(名为mylibrary.jar)已经构建完成。 现在,当我将这个jar作为库包含在另一个项目中时,我看到以下错误 线程“AWT-EventQueue-0”java.lang.NoClassDefoun
我一直以这篇文章为例。我有一个复杂的连接查询(这里简化了)。它返回来自两个表(以及使用CASE的派生列)的值的子集。我认为我不需要使用实体注释,因为从结果集中返回的对象不是模式中的实际表。 我希望保存连接查询结果的非实体对象: 我的回购: 我的服务: 我不确定如何让我的存储库查看我的新CarLimitDelta.getCarLimitDelta本机查询方法在我的NameNativeQuery中定义
上一个dev在代码中留下了一个非常奇怪的yoda条件: 经过一些测试,我发现与。 是总是等同于? 要分解条件,是还是?还是前者永远等同于后者?
我们面临的最大问题是,我们无法找出如何构造项目C,以使其在项目A和B中都能正常工作。在项目A中,我们希望maven能像往常一样工作,并根据需要降低依赖项。但我们也希望在项目B(也许结合Nexus+Tycho??)中实现该功能。 我们应该如何解决这个问题。我还没有找到一个好的解决办法如何做这件事。我已经在maven中尝试了apache felix捆绑插件,但不能让它像我想要的那样工作。这是正确的解决
我正在处理一个包含多个子项目的项目,它们都使用我创建的用于哈希、签名和加密消息的实用程序库。这个库基本上是bouncy Castle的包装器。 当我运行与库相关联的测试时,一切都通过了,一切都好了。当我将实用程序库打包到jar中时,会发生两件事: 正在使用库的子项目找不到与bouncy Castle关联的JAR。 即使将bouncy castle JAR添加到正在使用库的子项目中,项目也找不到bo
我正在学习新Java8中的lambdas。有一件事很有趣。如果方法具有与函数接口相同的签名,则可以使用lambdas API将其分配给方法。例如。 这个方法(integer.compare)是静态的,取两个值,一切都很完美。签名与接口方法比较中的签名相同。但这可以用非静态方法来实现,例如 这个方法是非静态的(实例级别),而且它只需要一个值。正如我所理解的,在Java中没有非静态方法,每个方法都是静