注入一个类DataSourceShow,如下:
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
import javax.sql.DataSource;
@Component
public class DataSourceShow implements ApplicationContextAware {
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
DataSource dataSource = applicationContext.getBean(DataSource.class);
System.out.println("-------------------");
System.out.println(dataSource.getClass().getName());
System.out.println("-------------------");
}
}
可以发现DataSourceShow类实现了ApplicationContextAware,重写了setApplicationContext()方法,按照Spring Bean的生命周期的规则,在其初始化时,setApplicationContext()方法就会被调用,然后获取到Spring IOC容器的上下文ApplicationContext,然后通过拿到class,再取name,获取到数据库连接池的全限定名,由此知道用的是哪种类型的数据库连接池。
启动项目,输出结果如下:
说明数据库连接池类型用的是Hikari。