SpringBoot 集成 Druid过程解析
Druid是一个高性能的数据库连接池和监控框架,而SpringBoot是一个轻量级的快速开发框架。在开发 SpringBoot 应用的同时,我们也需要使用数据库连接池来处理数据库访问。
在本文中,我们将详细介绍如何将 Druid 集成到 SpringBoot 项目中。我们将介绍以下内容:
- 在POM文件中添加Druid的Maven依赖。
- 在application.properties(或application.yml)文件中设置Druid数据源的相关属性。
- 在配置类中创建Druid数据源,并引入Druid的监控。
- 提供两个示例来演示如何使用Druid集成SpringBoot。
添加Druid依赖
首先,我们需要在POM文件中添加Druid的Maven依赖。请添加以下依赖项:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency>
配置Druid数据源
接下来,我们需要在application.properties
或application.yml
文件中设置Druid数据源的相关属性。这里提供一个简单的示例:
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.druid.initial-size=5
spring.datasource.druid.min-idle=5
spring.datasource.druid.max-active=20
spring.datasource.druid.validation-query=SELECT 1 FROM DUAL
spring.datasource.druid.test-on-borrow=true
spring.datasource.druid.max-wait=60000
spring.datasource.druid.filters=stat,wall,log4j
spring.datasource.druid.connection-properties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000;config.decrypt=false;config.decrypt.key=XXXX
这里需要注意的是,spring.datasource.type
属性必须设置为com.alibaba.druid.pool.DruidDataSource
,以便告诉SpringBoot使用Druid作为数据源。在细节上,我们也要设定数据源的一些连接信息,如连接数据库的url、用户名、密码、数据库驱动等。
创建Druid数据源
我们可以在SpringBoot的配置类中创建Druid数据源,并引入Druid的监控。这里提供一个示例:
@Configuration
public class DruidConfig {
@Bean
@ConfigurationProperties("spring.datasource.druid")
public DataSource druidDataSource() {
return new DruidDataSource();
}
@Bean
public ServletRegistrationBean druidServlet() {
//配置监控统计的路径
ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
//白名单
servletRegistrationBean.addInitParameter("allow", "127.0.0.1");
//黑名单
servletRegistrationBean.addInitParameter("deny", "10.0.0.2");
//控制台管理用户
servletRegistrationBean.addInitParameter("loginUsername", "admin");
servletRegistrationBean.addInitParameter("loginPassword", "123456");
//是否可以重置数据
servletRegistrationBean.addInitParameter("resetEnable", "false");
return servletRegistrationBean;
}
@Bean
public FilterRegistrationBean druidFilter() {
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());
//配置过滤器路径
filterRegistrationBean.addUrlPatterns("/*");
//忽略过滤格式
filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
return filterRegistrationBean;
}
}
在上面的配置类中,我们使用了一个@ConfigurationProperties
注解来注入Druid属性,创建了一个DruidDataSource
数据源。同时,我们还使用了@Bean
注解来创建监控Servlet和过滤器,这些都来自Druid框架。
在Servlet中,我们使用StatViewServlet
类来记录Druid数据源的状态,以便我们可以通过这个Servlet访问Druid的监控。在Filter中,我们使用WebStatFilter
类来记录Web资源的访问情况。
使用Druid数据源
现在我们已经完成了Druid和SpringBoot的集成配置。在这里,我们演示一下如何使用Druid数据源访问MySQL数据库。我们编写一个RESTful服务,用来获取和添加用户信息。以下是获取和添加用户信息的示例:
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
private JdbcTemplate jdbcTemplate;
@GetMapping("/")
public List<Map<String, Object>> getUsers() {
return jdbcTemplate.queryForList("SELECT * FROM users");
}
@PostMapping("/")
public Map<String, Object> addUser(@RequestBody Map<String, Object> user) {
String name = (String) user.get("name");
String email = (String) user.get("email");
jdbcTemplate.update("INSERT INTO users (name, email) VALUES (?, ?)", name, email);
Map<String, Object> result = new HashMap<>();
result.put("name", name);
result.put("email", email);
return result;
}
}
在上面的代码中,我们使用了JdbcTemplate
类,它是Spring的核心JDBC模板类,用来处理数据库连接和SQL语句。我们在addUser
方法中演示了如何添加用户到数据库中,而getUsers
方法用来获取数据库中的所有用户。
测试Druid集成SpringBoot
现在,我们已经完成了Druid的集成配置,可以使用Druid数据源访问MySQL数据库了。我们使用Postman测试上述两个方法。
首先,我们发送一个POST请求到http://localhost:8080/users/
,传入以下JSON数据:
{
"name": "Alice",
"email": "alice@example.com"
}
如果操作成功,我们将得到以下JSON响应:
{
"name": "Alice",
"email": "alice@example.com"
}
接下来,我们发送一个GET请求到http://localhost:8080/users/
,将得到以下JSON响应:
[
{
"id": 1,
"name": "Alice",
"email": "alice@example.com"
}
]
以上就是使用Druid集成SpringBoot的完整攻略。如果你遇到了问题,请随时在评论区留言,我会尽力回答您的问题。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot 集成 Druid过程解析 - Python技术站