# 第一种方式 (不推荐)

# @ComponentScan: 扫描式

1. 导入 druid 的 pom 依赖

pom.xml

<dependency>
          <groupId>com.alibaba</groupId>
          <artifactId>druid</artifactId>
          <version>1.2.8</version>
      </dependency>
  • SpringConfig
@SuppressWarnings("all")
@Configuration
@ComponentScan("com.dkx.spring")
public class SpringConfig {
}

在该类中使用注解 @ComponentScan 来扫描 JdbcConfig 配置类否则 Spring 工厂获取 Bean 时因找不到 DataSource 则会报错

  • JdbcConfig

<font style="color:red"> 注意:</font> 使用 @Configuraion 注解来配置当前类为配置类

@SuppressWarnings("all")
@Configuration
public class JdbcConfig {
//    1. 定义一个方法获得管理的对象
//    2. 添加 @Bean 表示当前方法返回值是一个 bean
    @Bean("druid")
    public DataSource getDataSource(){
        DruidDataSource druidDataSource = new DruidDataSource();
        druidDataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
        druidDataSource.setUrl("jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8&serverTimezone=UTC");
        druidDataSource.setUsername("root");
        druidDataSource.setPassword("dkx");
        return druidDataSource;
    }
}
  • 测试代码
public void test(){
        ApplicationContext c = new AnnotationConfigApplicationContext(SpringConfig.class);
        DataSource dataSource = c.getBean("druid",DataSource.class);
        System.out.println(dataSource);
    }

Run Result

image_2023-02-25-15-24-22

不推荐使用以上方式因为光靠 @ComponentSacn 注解看不出来我们想要找到的配置类究竟在哪

# 第二种方式

# @Import: 导入式

  • 可导入多个使用 , 分隔

1. 还是导入 druid 的 pom 依赖

2.SpringConfig

@SuppressWarnings("all")
@Configuration
// 导入配置类,可导入多个使用,分隔开来
@Import({JdbcConfig.class})
public class SpringConfig {
}

使用这种方式将我们要导入的类类型直接写上,可以很直观的就知道我们想要查看的类是哪个

3.JdbcConfig

<font style="color:red"> 注意:</font> 在 SpringConfig 配置类中使用 @Import 注解导入的类可以不写 @Configuration 注解

@SuppressWarnings("all")
// 在 SpringConfig 中使用 @Import 导入的类可不不进行配置 @Configuration 注解
public class JdbcConfig {
//    1. 定义一个方法获得管理的对象
//    2. 添加 @Bean 表示当前方法返回值是一个 bean
    @Bean("druid")
    public DataSource getDataSource(){
        DruidDataSource druidDataSource = new DruidDataSource();
        druidDataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
        druidDataSource.setUrl("jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8&serverTimezone=UTC");
        druidDataSource.setUsername("root");
        druidDataSource.setPassword("dkx");
        return druidDataSource;
    }
}

4. 测试代码

public void test(){
        ApplicationContext c = new AnnotationConfigApplicationContext(SpringConfig.class);
        DataSource dataSource = c.getBean("druid",DataSource.class);
        System.out.println(dataSource);
    }

Run Result

image_2023-02-25-15-32-48