【问题标题】:Unsatisfied Dependency Exception in Spring bootSpring Boot中不满足的依赖异常
【发布时间】:2018-09-29 01:41:08
【问题描述】:

我有一个属性 XML 文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
    <entry key="sample.findAll">
        <![CDATA[
            The SQL query goes here
        ]]>
    </entry>    
</properties>

还有一个配置文件如下:

@ImportResource("classpath:sql/find-all-sample-native-query.xml")
@Configuration
public class SampleFindAllConfig {

    @Value("#{sample.findAll}")
    private String findAllQuery;

    @Bean
    public String findAllSampleNativeQuery() {
        return findAllQuery;
    }
}

我在 DAO 类中注入 Bean,如下所示:

@Inject
private String findAllAnomalieNativeQuery;

但是当我运行我的应用程序时出现此错误:

org.springframework.beans.factory.UnsatisfiedDependencyException: 创建名为“sampleDAO”的 bean 时出错:不满足的依赖关系 通过字段“findAllSampleNativeQuery”表示;嵌套异常 是 org.springframework.beans.factory.UnsatisfiedDependencyException: 创建名为“sampleFindAllConfig”的 bean 时出错:不满意 通过字段“findAllQuery”表示的依赖关系;嵌套异常是 org.springframework.beans.factory.BeanExpressionException:表达式 解析失败;嵌套异常是 org.springframework.expression.spel.SpelEvaluationException:EL1008E: 在类型的对象上找不到属性或字段“样本” 'org.springframework.beans.factory.config.BeanExpressionContext' - 也许不公开?

我该如何解决这个问题?

【问题讨论】:

  • 老实说,我不喜欢你为此使用 XML 文件;您是否尝试过使用属性文件来执行此操作?
  • @Makoto 不,我没有我会尝试用属性文件来做。
  • 你为什么不利用你的 POJO 和属性文件本身

标签: java spring spring-boot


【解决方案1】:

代码有两个问题。

问题1:使用@PropertySource加载带有@Value的属性值

@ImportResource 导入 bean 定义,通常与 XML Spring 配置结合使用。

要从配置文件加载@Value 的属性值,请使用@PropertySource

问题 2:使用 ${...} 语法引用属性

#{sample.findAll} 是一个 SpEL 表达式。它要求 Spring 评估 sample.findAll,使用 sample 作为 bean。由于上下文中没有该名称的 bean,因此 Spring 正确地抱怨没有这样的 bean。

要从配置源加载属性sample.findAll 的值,请使用语法${sample.findAll}


以下代码将起作用:

@Configuration
@PropertySource("classpath:sql/find-all-sample-native-query.xml")
public class SampleFindAllConfig {
    @Value("${sample.findAll}")
    private String findAllQuery;

    @Bean
    public String findAllSampleNativeQuery() {
        return findAllQuery;
    }
}

【讨论】:

    猜你喜欢
    • 2018-06-10
    • 1970-01-01
    • 2018-10-03
    • 2018-12-19
    • 2021-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多