开发者社区 问答 正文

Spring Boot 2.0.2不能自动注入

之前用的是Spring Boot1.4.2,druid用的是1.1.2

配置方式如下:

spring.datasource.druid.url=xxxx spring.datasource.druid.username=xxx spring.datasource.druid.password=xxx spring.datasource.druid.driver-class-name=com.mysql.jdbc.Driver

升级Spring Boot版本到2.0.2后报下面的错,druid用的是1.1.9

Caused by: org.springframework.boot.context.properties.bind.BindException: Failed to bind properties under 'spring.datasource.druid' to javax.sql.DataSource at org.springframework.boot.context.properties.bind.Binder.handleBindError(Binder.java:250) at org.springframework.boot.context.properties.bind.Binder.bind(Binder.java:226) at org.springframework.boot.context.properties.bind.Binder.bind(Binder.java:210) at org.springframework.boot.context.properties.bind.Binder.bind(Binder.java:192) at org.springframework.boot.context.properties.ConfigurationPropertiesBinder.bind(ConfigurationPropertiesBinder.java:82) at org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor.bind(ConfigurationPropertiesBindingPostProcessor.java:107) ... 49 common frames omitted

原提问者GitHub用户yinjihuan

展开
收起
山海行 2023-07-05 19:54:08 99 发布于北京 分享
分享
版权
举报
2 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    如果您在使用Spring Boot 2.0.2时无法自动注入Bean,可能是由于以下几个原因:

    @Autowired注解不起作用:在Spring中,使用@Autowired注解可以自动注入Bean。但是,在某些情况下,可能会出现@Autowired注解不起作用的情况。这可能是由于您没有将类或方法标记为Spring Bean,或者没有启用自动配置功能。请确保您的类或方法被标记为Spring Bean,或者启用了自动配置功能。

    Bean名称匹配问题:在Spring中,自动注入Bean时,Spring会根据Bean的名称和类型进行匹配。如果您的Bean名称不正确或不匹配,可能会导致自动注入失败。请检查您的Bean名称和类型是否正确,并确保它们与@Autowired注解中的名称和类型匹配。

    Bean作用域问题:在Spring中,Bean可以有不同的作用域,例如单例、原型、会话和请求等。如果您的Bean作用域不正确,可能会导致自动注入失败。请检查您的Bean作用域是否正确,并确保它们与@Autowired注解中的作用域匹配。

    Bean定义重复问题:在Spring中,如果有多个Bean定义具有相同的名称和类型,则可能会导致自动注入失败。请检查您的Bean定义,确保它们具有唯一的名称和类型。

    版本兼容性问题:Spring Boot 2.0.2可能不兼容某些版本的Spring或其他相关库。请确保您的应用程序使用的Spring和其他相关库的版本与Spring Boot 2.0.2兼容。

    2023-07-30 15:07:54 举报
    赞同 评论

    评论

    全部评论 (0)

    登录后可评论
  • 找到原因了,是filters出的问题。 是spring.datasource.druid.filters=stat,wall,log4j有问题 load com.alibaba.druid.filter.logging.Log4jFilter报错 把log4j去掉就可以了

    原回答者GitHub用户yinjihuan

    2023-07-06 11:15:53 举报
    赞同 评论

    评论

    全部评论 (0)

    登录后可评论