数据仓库 HIVE实战
@ConfigurationProperties(prefix = "hive")
@Data
public class HiveDruidConfig {
private String url;
private String user;
private String password;
private String driverClassName;
private int initialSize;
private int minIdle;
private int maxActive;
private int maxWait;
private int timeBetweenEvictionRunsMillis;
private int minEvictableIdleTimeMillis;
private String validationQuery;
private boolean testWhileIdle;
private boolean testOnBorrow;
private boolean testOnReturn;
private boolean poolPreparedStatements;
private int maxPoolPreparedStatementPerConnectionSize;
@Bean(name = "hiveDruidDataSource")
@Qualifier("hiveDruidDataSource")
public DataSource dataSource() {
DruidDataSource datasource = new DruidDataSource();
datasource.setUrl(url);
datasource.setUsername(user);
datasource.setPassword(password);
datasource.setDriverClassName(driverClassName);
// pool configuration
datasource.setInitialSize(initialSize);
datasource.setMinIdle(minIdle);
datasource.setMaxActive(maxActive);
datasource.setMaxWait(maxWait);
datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
datasource.setValidationQuery(validationQuery);
datasource.setTestWhileIdle(testWhileIdle);
datasource.setTestOnBorrow(testOnBorrow);
datasource.setTestOnReturn(testOnReturn);
datasource.setPoolPreparedStatements(poolPreparedStatements);
datasource.setMaxPoolPreparedStatementPerConnectionSize(maxPoolPreparedStatementPerConnectionSize);
return datasource;
}
@Bean(name = "hiveDruidTemplate")
public JdbcTemplate hiveDruidTemplate(@Qualifier("hiveDruidDataSource") DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
这段代码是一个使用Spring Boot和Druid连接池来配置Hive数据库连接的示例。它展示了如何通过@ConfigurationProperties
注解来简化配置属性的绑定,以及如何通过Spring的@Bean
注解来创建和管理DataSource
和JdbcTemplate
的Bean。下面是对这段代码的详细教学讲解:
1. @ConfigurationProperties(prefix = "hive")
- 作用:这个注解用于将配置文件(如
application.properties
或application.yml
)中前缀为hive
的属性绑定到当前类(HiveDruidConfig
)的字段上。这使得配置数据库连接和其他相关参数变得非常便捷和集中。 - 例子:如果你在
application.properties
中有hive.url=jdbc:hive2://...
,那么url
字段就会被自动赋值。
2. @Data
- 作用:这个注解来自Lombok库,它会自动为类的字段生成getter、setter、equals、hashCode和toString方法。这减少了样板代码,使类更加简洁。
3. 字段定义
- 类中定义了多个私有字段,这些字段对应于Hive数据库连接和Druid连接池的配置参数。
4. dataSource()
方法
- 作用:这个方法使用
@Bean
注解,表示它会返回一个Bean,这个Bean会被Spring容器管理。在这个例子中,它创建并配置了一个DruidDataSource
实例,这是Druid连接池的实现。 - 配置:方法内部通过setter方法设置了DruidDataSource的各种属性,这些属性来自于类字段的值,这些值又通过
@ConfigurationProperties
从配置文件中获取。 - 返回值:方法返回配置好的
DruidDataSource
实例,Spring容器会将其注册为一个名为hiveDruidDataSource
的Bean。
5. hiveDruidTemplate()
方法
- 作用:这个方法也使用了
@Bean
注解,它创建了一个JdbcTemplate
实例,这个实例用于简化数据库操作。 - 参数:方法接收一个
DataSource
类型的参数,通过@Qualifier("hiveDruidDataSource")
注解指定使用名为hiveDruidDataSource
的DataSource Bean。 - 返回值:方法返回配置好的
JdbcTemplate
实例,Spring容器会将其注册为一个名为hiveDruidTemplate
的Bean。
总结
这段代码展示了如何在Spring Boot应用中通过@ConfigurationProperties
和@Bean
注解来配置和管理数据库连接。通过使用Druid连接池,可以进一步提高数据库操作的性能和稳定性。同时,通过JdbcTemplate
,开发者可以更方便地进行数据库操作,而无需编写大量的JDBC代码。