package com.aiotagro.cattletrade.config;

import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.sql.DataSource;

/**
 * Druid 数据源配置类
 * 
 * @author Carson
 * @package_name com.aiotagro.payinfo.config
 * @date 2024/2/6 17:00
 */
@Configuration
public class DruidDataSourceConfig {

    /**
     * 配置 Druid 数据源
     * 
     * 说明：
     * 1. 使用 @ConfigurationProperties("spring.datasource") 自动读取配置文件中的连接池参数
     * 2. Spring Boot 默认使用 HikariCP，通过注入自定义 DataSource Bean 来使用 Druid
     * 3. Druid 连接池参数通过 application.yml 中的 spring.datasource.druid.* 配置
     * 
     * @return DataSource 数据源实例
     */
    @ConfigurationProperties("spring.datasource")
    @Bean
    public DataSource dataSource() {
        DruidDataSource druidDataSource = new DruidDataSource();
        // 连接池参数通过 @ConfigurationProperties 自动从配置文件注入
        // 配置文件位置：application.yml 中的 spring.datasource.druid.*
        return druidDataSource;
    }
}
