小编Zhe*_*Zhu的帖子

为什么DataSource无法在Spring启动应用程序中自动装配?

我知道dataSource如果设置相关配置,spring boot会自动创建一个Bean application.properties,如:

spring.datasource.url = jdbc:mysql://192.168.10.103:3306/hms?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
spring.datasource.username=root
spring.datasource.password=test@123
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
Run Code Online (Sandbox Code Playgroud)

申请代码:

package com.synline.mdataserver;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.apache.tomcat.jdbc.pool.DataSource;

@SpringBootApplication
public class Application implements CommandLineRunner {

    @Autowired
    AnnotationConfigApplicationContext context;

    /*@Autowired
    DataSource dataSource;*/

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

    @Override
    public void run(String... args) throws Exception {
        DataSource dataSource = (DataSource)context.getBean("dataSource");
        System.out.println(dataSource);

        while (true) {
           Thread.sleep(5000);
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

如果@Autowired DataSource被注释掉,将打印Bean信息:

org.apache.tomcat.jdbc.pool.DataSource@1800a575{ConnectionPool[defaultAutoCommit=null; defaultReadOnly=null; ....}
Run Code Online (Sandbox Code Playgroud)

所以我认为Spring Boot真的创建了Bean.

但是如果使用了@Autowried DataSource,那么抱怨No …

spring datasource spring-boot

6
推荐指数
1
解决办法
1万
查看次数

标签 统计

datasource ×1

spring ×1

spring-boot ×1