spring 编程如何配置 DRUID 数据源?
- 引入 DRUID 依赖
在 pom.xml 文件中添加 DRUID 的依赖:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.6</version>
</dependency>
- 配置数据源
在 application.properties 或 application.yml 中添加数据库连接信息:
# 数据库连接信息
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=root
# 数据库连接池配置
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
# Druid 连接池配置
spring.datasource.druid.initial-size=5
spring.datasource.druid.min-idle=5
spring.datasource.druid.max-active=20
spring.datasource.druid.test-on-borrow=true
spring.datasource.druid.validation-query=SELECT 1 FROM DUAL
spring.datasource.druid.max-wait=60000
spring.datasource.druid.time-between-eviction-runs-millis=60000
spring.datasource.druid.min-evictable-idle-time-millis=300000
spring.datasource.druid.test-while-idle=true
spring.datasource.druid.test-on-return=false
spring.datasource.druid.pool-prepared-statements=true
spring.datasource.druid.max-pool-prepared-statement-per-connection-size=20
spring.datasource.druid.filters=stat,wall,logback
spring.datasource.druid.connection-properties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
- 配置 Druid 监控
可以配置 Druid 监控,以方便查看连接池的使用情况。
在 Spring Boot 的 Application 类中添加注解 @ServletComponentScan ,启用 Servlet 组件扫描。然后创建一个 DruidServlet 和 DruidStatViewServlet,用来访问监控页面和获取监控数据。
@SpringBootApplication
@ServletComponentScan
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Bean
public ServletRegistrationBean<Servlet> druidServletRegistrationBean() {
ServletRegistrationBean<Servlet> registrationBean = new ServletRegistrationBean<>(new StatViewServlet(), "/druid/*");
// IP 白名单
registrationBean.addInitParameter("allow", "127.0.0.1");
// IP 黑名单
registrationBean.addInitParameter("deny", "");
// 登录账号密码
registrationBean.addInitParameter("loginUsername", "admin");
registrationBean.addInitParameter("loginPassword", "admin");
return registrationBean;
}
@Bean
public FilterRegistrationBean<Filter> druidFilterRegistrationBean() {
FilterRegistrationBean<Filter> registrationBean = new FilterRegistrationBean<>(new WebStatFilter());
// 过滤规则
registrationBean.addUrlPatterns("/*");
// 忽略资源
registrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
return registrationBean;
}
}
- 使用数据源
在需要使用数据源的类中添加 @Autowired 注解,注入 DataSource 对象,然后就可以使用了。
@Service
public class UserServiceImpl implements UserService {
@Autowired
private DataSource dataSource;
@Override
public void createUser(User user) {
try (
Connection connection = dataSource.getConnection();
PreparedStatement statement = connection.prepareStatement("INSERT INTO user(name, age) VALUES(?, ?)");
) {
statement.setString(1, user.getName());
statement.setInt(2, user.getAge());
statement.executeUpdate();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
原文地址: https://www.cveoy.top/t/topic/xF6 著作权归作者所有。请勿转载和采集!