多数据源配置文件配置的Druid,public DruidDataSource dataSource(DruidDataSource datasource) ,主库用type: com.zaxxer.hikari.HikariDataSource会报空指针吗
时间: 2023-10-24 20:40:49 浏览: 122
这个问题我理解的是,你使用了多数据源配置文件配置的Druid,并且在配置文件中,主库使用了type: com.zaxxer.hikari.HikariDataSource,那么在使用DruidDataSource对象时,是否会报空指针异常。
首先需要说明的是,如果你在配置文件中将主库的type设置为了com.zaxxer.hikari.HikariDataSource,那么在代码中使用的应该是HikariDataSource对象,而不是DruidDataSource对象。如果你使用了DruidDataSource对象,则会报错。
如果你将主库的type设置为了DruidDataSource,那么在代码中使用DruidDataSource对象时,应该不会出现空指针异常。但是具体是否会出现异常还需要看你的具体实现。
相关问题
spring.datasource.name=druidDataSource和spring.datasource.type=com.alibaba.druid.pool.DruidDataSource作用有区别吗
`spring.datasource.name` 和 `spring.datasource.type` 是两个不同的配置属性,分别用于指定数据源的名称和数据源的类型。
`spring.datasource.name` 用于指定数据源的名称,如果不指定则默认名称为 `dataSource`。在一个应用程序中可能会存在多个数据源,通过指定不同的名称来区分它们。
`spring.datasource.type` 用于指定数据源的类型,可选值包括 `com.zaxxer.hikari.HikariDataSource`、`com.alibaba.druid.pool.DruidDataSource`、`org.apache.tomcat.jdbc.pool.DataSource` 等等。不同的数据源类型有着不同的特点和性能表现,可以根据实际需求进行选择。
在具体使用中,如果需要使用 `DruidDataSource` 作为数据源,则需要在 `spring.datasource.type` 属性中指定为 `com.alibaba.druid.pool.DruidDataSource`,同时也可以通过 `spring.datasource.name` 属性指定数据源的名称。例如:
```
spring.datasource.name=druidDataSource
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
```
这样就会创建一个名称为 `druidDataSource`,类型为 `DruidDataSource` 的数据源。
HikariDataSource druid
HikariDataSource和Druid都是Java数据库连接池,它们都能提供高效、可靠的数据库连接管理。但是,它们的实现方式和特点有所不同。
HikariDataSource是一个轻量级的连接池,具有快速启动、低延迟、高吞吐量等特点,适合于高并发的场景。它的连接池大小和其他参数都是自动调整的,可以根据应用程序的负载情况动态地调整。
Druid是一个功能强大的连接池,除了提供连接池管理外,还具有监控、防御SQL注入攻击等功能。它支持多租户、多数据源、读写分离、分布式等复杂场景,适合于大型企业级应用。但是,相对于HikariDataSource,Druid的启动速度较慢,占用的内存也较多。
综上所述,选择HikariDataSource还是Druid需要根据具体的场景和需求进行权衡和选择。
阅读全文