springboot2.1.x升级到2.2.x以后引用DataSource出现的 could not be found

       我在本地引用了一个DataSource的bean,在springboot2.1.x的时候是可以正常启用的,这个bean是一个接口必须传入的,只有判断通过就行,暂时没有多大作用,但是在springboot从2.1.x升级到2.2.x以后,这个DataSource的bean就出现如下异常了

A component required a bean of type 'javax.sql.DataSource' that could not be found.

The following candidates were found but could not be injected:
	- Bean method 'dataSource' in 'JndiDataSourceAutoConfiguration' not loaded because @ConditionalOnProperty (spring.datasource.jndi-name) did not find property 'jndi-name'
	- Bean method 'dataSource' in 'XADataSourceAutoConfiguration' not loaded because @ConditionalOnClass did not find required class 'javax.transaction.TransactionManager'


Action:

Consider revisiting the entries above or defining a bean of type 'javax.sql.DataSource' in your configuration.

       通过异常可以看出,它必须要定义一个具体的DataSource才行,但是在2.1.x中通过配置文件看出,它是默认实现了HikariDataSource的默认bean,但是在2.2.x中就出现了上面的这种错误。具体的解决方案也就是前面说的必须定义一个具体的DataSource才行,因此实现方式如下:

@Configuration
public class DataSourceConfig {

    @ConfigurationProperties(prefix="spring.datasource.hikari")
    @Bean
    public DataSource dataSource(){
        return DataSourceBuilder.create().build();
    }
}
spring:
  datasource:
    hikari:
      #指定校验连接合法性执行的sql语句
      connection-test-query: select 1
      auto-commit: true
      #注意的是这个地方的定义需要用在DataSourceConfig.java里面使用,是因为在定义JobEventConfig.java的时候需要引入自定义dataSource
      username: root
      password: root
      jdbc-url: jdbc:mysql://localhost:3306/orderSystem?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8

        注意配置的引用,不然会出现其他错误。

你可能感兴趣的:(spring,boot)