我有一个中等大小的Spring应用程序。当我重构一些loc时,我注意到以下行为:
事实上,注入工作正常:
public class AppConfig {
@Autowired
private Environment env;
…
当我尝试使用构造函数注入时,环境为空,我的应用程序告诉我,由于循环引用,它无法创建配置bean:
public class AppConfig {
private final Environment env;
private final IndexableService indexableService;
@Autowired
public AppConfig(Environment env, IndexableService indexableService) {
this.env = env;
this.indexableService = indexableService;
}
…
在堆栈的某个地方:
原因:org.springframework.beans.factory.Bean货币InCreationException:创建名为appConfig的bean时出错:请求的bean当前正在创建中:是否存在无法解析的循环引用?
我尝试了一些我在网上找到的解决方案,但都没有帮助。我如何才能正确调试它?如何找到创建循环引用的位置?
编辑:
粘贴箱上的stacktrace
登录pastebin
编辑2:
可索引服务类:
package de.xx.yy.server.service;
import de.xx.yy.server.model.Indexable;
import java.util.List;
public interface IndexableService {
List<Indexable> search(String searchString);
}
课程实施:
package de.xxx.yyy.server.service;
import de.xxx.yyy.server.model.Indexable;
import io.leangen.graphql.annotations.GraphQLArgument;
import io.leangen.graphql.annotations.GraphQLQuery;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class IndexableServiceImpl implements IndexableService {
private final Searcher searcher;
@Autowired
public IndexableServiceImpl(Searcher searcher) {
this.searcher = searcher;
}
@GraphQLQuery(name = "search")
public List<Indexable> search(@GraphQLArgument(name = "searchString") String searchString) {
return searcher.search(searchString);
}
}
PS:之前,我的环境刚刚被null(这就是为什么线被删除)。我无法重现空环境,现在我得到了循环引用错误。
主要问题是缺少依赖项
通过构造函数参数0表示的未满足依赖关系;嵌套异常为org。springframework。豆。工厂UnsatisfiedDependencyException:创建名为“elasticSearch”的bean时出错,该bean在文件[Users/ry77/Workspace/Campus/$PROJECT server/target/$COMPANY.$PROJECT.server-0.0.1-alpha/WEB-INF/classes/de/$COMPANY/$PROJECT/server/service/searchengine/elasticSearch.class]中定义:通过构造函数参数0表示的未满足的依赖关系;
1)@EnableAutoConfiguration或@SpringBootApplication应该出现在主类
2)确保您的pom中有依赖项
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jpa</artifactId>
<version>2.0.8</version>
</dependency>
or
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
</dependency
3) 你的弹性类应该用@Component注释,并注入@autowired
希望有帮助
我注意到我正在开发的应用程序中有一个奇怪的bug。在修改一个类时,我将一组属性移动到构造函数中进行自动连接,而不是使用字段注入,然而,由于循环依赖关系,这导致我在启动时出错。下面是导致错误的依赖关系的分解: 我正在尝试在TargetClass的内部使用ServiceA 服务A通过其构造函数注入了服务B 通过现场注入,服务B已注入服务C 通过现场注入,ServiceC已注入TargetClass 我
我正试图在计算机上实现这个例子https://developer.android.com/jetpack/docs/guide.这就解释了Android应用程序的结构。 当我使用相同的代码时,我会出现以下错误。 我可以找出这个错误与 当我为ViewModel编写默认的零输入构造函数时,我得到了以下错误。 我想不出这个错误的原因和解决方法。
建议将以下语句更改为NetBeans中的lambda表达式。 但是,当我应用假定的更改(Alt Enter)时,我得到了: 当这不会与消息一起编译时: 没有找到合适的构造函数为KeyFrame(持续时间,(事件前夕[…]}}})-参数不匹配 问题是为什么NetBeans会提出一些它无法实现的东西?如何在Timeline构造函数中实际使用lambda函数?谢谢
我想在构造函数中使用Request类,这是我想运行服务器时它给我的错误: 无法自动连接服务"AppBundle\Controller\DetectServiceDetailController":方法"__construct()"引用类"Symfony\Component\HttpFoundation\Request"的参数"$ask",但不存在这样的服务。它不能自动注册,因为它来自不同的根命名空
我正在尝试修改类Circle以包含第三个构造函数,用于构造具有两个参数的Circle实例——半径的双精度和颜色的字符串。还修改主类以使用此构造函数构造Circle的实例。我对此有困难,我一直收到从未使用构造函数Circle的消息。请查看代码。
问题内容: 当我尝试将$ http注入到覆盖的工厂中时,出现错误: 未捕获的错误:[$ injector:cdep]找到循环依赖项:$ http <-$ exceptionHandler <-$ rootScope 任何想法如何解决?如果我使用[]注入,则$ http是未定义的 编辑 ___ _ ___ ___ _ 根据下面的答案,我尝试了: 但我仍然收到循环错误: 未捕获的错误:[$ injec