原创

关于idea 使用springboot装配Druid数据源,DataSource无法装配的问题

首先需要确定已经导入了相关的依赖包

<dependencies>
	<!--数据库连接驱动-->
	<dependency>
		<groupId>mysql</groupId>
		<artifactId>mysql-connector-java</artifactId>
	</dependency>
	<!--Druid数据源-->
	<dependency>
		<groupId>com.alibaba</groupId>
		<artifactId>druid</artifactId>
	</dependency>
	<!--测试相关依赖-->
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-test</artifactId>
		<scope>test</scope>
	</dependency>
</dependencies>

其次是application.yml 文件中是否已经做了数据源的相关配置

spring:
  datasource:
    name: mydb
    type: com.alibaba.druid.pool.DruidDataSource
    url: jdbc:mysql://数据库地址:端口号/数据库名?serverTimezone-UTC
    username: username
    password: password
    driver-class-name: com.mysql.cj.jdbc.Driver

接下来是最重要的一步,就是装配DruidDataSource到IOC容器中,装配Bean类有两种办法,第一种是写一个配置类文件,然后装配,也可以直接写在主启动类中,以写在主启动类中为例:

@SpringBootApplication
public class MysqlMainApp {
    public static void main(String[] args) {
        SpringApplication.run(MysqlMainApp.class, args);
    }
    
    @Bean // 使用注解装配到IOC容器中
    @ConfigurationProperties(prefix = "spring.datasource") // 指定数据源的配置所在位置,这一步是关键,如果没有,极有可能是无法正常装配DataSource的
    public DataSource getDateSource() {
        return new DruidDataSource();
    }
}

定义一个测试类,测试是否装配成功

@RunWith(SpringRunner.class)
@SpringBootTest()
public class MybatisTest {

    @Autowired()
    private DataSource dataSource;

    private final Logger logger = LoggerFactory.getLogger(MybatisTest.class);

    @Test
    public void test() throws SQLException {
        final Connection connection = dataSource.getConnection();
        logger.info(connection.toString());
    }
}

测试结果成功拿到连接

在这里插入图片描述

springboot的疑难杂症
java填坑大作战
  • 作者:JackLiu
  • 发表时间:2020-12-09 03:38:01
  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
  • 公众号转载:请在文末添加作者公共号二维码

评论列表