Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带弹簧的嵌入式自动布线_Java_Spring_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Autowired - Fatal编程技术网 elasticsearch,autowired,Java,Spring,elasticsearch,Autowired" /> elasticsearch,autowired,Java,Spring,elasticsearch,Autowired" />

Java 带弹簧的嵌入式自动布线

Java 带弹簧的嵌入式自动布线,java,spring,elasticsearch,autowired,Java,Spring,elasticsearch,Autowired,我正在尝试用Spring和嵌入式Elastic构建一个RESTAPI。我在尝试启动应用程序时遇到NoSuchBeanDefinition异常 目前,我有一个用于连接弹性db的: @Configuration public class EsConfig { Node node; @Bean public Client es() { node = nodeBuilder().local(true).node(); return node.cl

我正在尝试用Spring和嵌入式Elastic构建一个RESTAPI。我在尝试启动应用程序时遇到NoSuchBeanDefinition异常

目前,我有一个用于连接弹性db的:

@Configuration
public class EsConfig {
    Node node;

    @Bean
    public Client es() {
        node = nodeBuilder().local(true).node();
        return node.client();
    }

    (Destructor)
}
在控制器中:

@RestController
public class Controller {

    @Autowired
    public Client elasticSearchClient;
...
}
但当我启动它时,我得到了一个例外:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'controller': Injection of autowired dependencies failed;
nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: public org.elasticsearch.client.Client package.Controller.elasticSearchClient;
nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException:
    No qualifying bean of type [org.elasticsearch.client.Client] found for dependency:
    expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

我已经尝试了一些不同的注释,但显然我还远远不够。

没有[some.Thing]类型的限定bean
意味着spring不知道适用于此接口的类

原因可能是

  • 具有
    @Bean
    方法的类不是
    @Configuration
  • 类路径组件扫描程序未拾取
    @配置
Spring boot默认情况下只扫描
@SpringBootApplication
的子包层次结构。如果您想包含超出此范围的代码,可以通过
@ComponentScan
注释更改扫描行为

@SpringBootApplication
@ComponentScan(basePackageClasses = {MyApp.class, SomeOtherClassInARootPackage.class})
public class MyApp {
...

将添加其他类的包(和子包),同时保持应用程序包的扫描。

缺少哪个bean?你能在你的问题中包括例外情况吗?不确定空的
@Qualifier
有什么作用,但如果不指定限定符,则不需要它。它在控制器类中缺少客户端bean。我更新了问题,将例外的内容包括在内。我以前在限定符中有一个名字,只是忘记完全删除它。就像我说的,我已经尝试了很多不同的东西。啊,试着让你的配置成为
@Configuration
,这是一个提供
@Bean
的类,
@Component
本身就是
@Bean
。如果您不使用命名bean方法,请去掉限定符:)好的,更改为@Configuration并删除了限定符,但我仍然看到相同的异常。bean是
org.elasticsearch.client.client
,配置类在扫描包中?“没有Client类型的bean”基本上意味着spring没有使用/查看@bean方法。如果您在config类中使用带有
@PostConstruct
和一些println/log的无参数方法annotated(这是一个单词吗?),您看到了吗?或者简单地将日志放入bean方法中,看看是否调用了它。