【问题标题】:Spring: Failed to load ApplicationContextSpring:无法加载 ApplicationContext
【发布时间】:2019-09-18 21:58:20
【问题描述】:

我不断遇到问题标题中提到的问题。 我想介绍一些 DI 使用 i.a. applicationContext.xml 文件和 @ImportResource 注释。我检查了一些将applicationContext.xml 位置传递给@ImportResource 的方法 但他们不工作。在关闭测试的情况下执行编译。我在项目和项目树中的某些文件的下面部分发布。你有什么想法我该如何克服这个问题?

GitHubDetailsApplication

package pl.cd.githubdetails;

// imports ...

@SpringBootApplication
// doesnt work:
// @ImportResource(locations = {"applicationContext.xml"})
// @ImportResource(locations = {"classpath:applicationContext.xml"})
// @ImportResource({"classpath*:applicationContext.xml"})
@ImportResource({"/applicationContext.xml"}) // also doesnt work
public class GitHubDetailsApplication extends SpringBootServletInitializer {

    public static void main(String[] args) {
        SpringApplication.run(GitHubDetailsApplication.class, args);
    }

}

项目树

applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd">

<context:component-scan base-package="pl.cd.githubdetails"/>

</beans>

GitController

package pl.cd.githubdetails;

// imports 

@RestController
public class GitController {

    @Autowired
    GitHttpClient gitHttpClient;
// ...
}

GitHttpClient

package pl.cd.githubdetails;


public class GitHttpClient {
    // imports ...
    private RestTemplate restTemplate;

    public GitHttpClient() {
        this.restTemplate = new RestTemplate();
    }
    // ...
}

编辑我插入堆栈。

2019-09-19 00:25:20.413  WARN 13584 --- [main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'gitController': Unsatisfied dependency expressed through field 'gitHttpClient'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'pl.cd.githubdetails.GitHttpClient' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
2019-09-19 00:25:20.415  INFO 13584 --- [main] o.apache.catalina.core.StandardService   : Stopping service [Tomcat]
2019-09-19 00:25:20.425  INFO 13584 --- [main] ConditionEvaluationReportLoggingListener : Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2019-09-19 00:25:20.497 ERROR 13584 --- [main] o.s.b.d.LoggingFailureAnalysisReporter   : 

***************************
APPLICATION FAILED TO START
***************************

Description:

Field gitHttpClient in pl.cd.githubdetails.GitController required a bean of type 'pl.cd.githubdetails.GitHttpClient' that could not be found.

The injection point has the following annotations:
- @org.springframework.beans.factory.annotation.Autowired(required=true)


Action:

Consider defining a bean of type 'pl.cd.githubdetails.GitHttpClient' in your configuration.

【问题讨论】:

  • 告诉我们你到底得到了什么异常。
  • @mentallurg 问题已编辑。

标签: java spring spring-boot


【解决方案1】:

您的控制器期望有一个 GitHttpClient 类型的 bean 将被注入:

@Autowired
GitHttpClient gitHttpClient;

但是没有这样的bean。为什么?因为您没有将您的类 GitHttpClient 注释为 Spring bean。你能做什么?将其注释为ServiceComponent

@Service
public class GitHttpClient {
    ...
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-12
    • 1970-01-01
    • 2013-01-27
    • 2017-10-04
    • 1970-01-01
    • 2013-07-11
    • 1970-01-01
    • 2020-09-26
    相关资源
    最近更新 更多