自动扫描servlet3.0注解配置

前言

在springboot项目中,使用alibaba druid数据库连接池,通过Servlet3.0提供的注解启用数据监控配置;在Servlet3.0中提供了@WebServlet, @WebFilter, @WebListener等注解来替代web.xml配置文件,下面以druid监控配置为例,说明如何在springboot项目中使用Servlet3.0提供的新注解。

pom.xml配置

<dependencies>
<!-- 核心模块,集成自动配置支持,日志和YAML等核心功能 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>

<!-- web微服务开发模块 ,集成了web容器功能 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<!-- JPA 数据库操作配置 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>

<!-- 数据库连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.18</version>
</dependency>
</dependencies>

添加Servlet

@WebServlet(name = "DruidStatViewServlet", urlPatterns = "/druid/*", initParams = {
@WebInitParam(name = "allow", value = "127.0.0.1,192.168.0.1"),// IP白名单 (没有配置或者为空,则允许所有访问)
@WebInitParam(name = "deny", value = "192.168.0.103"),// IP黑名单 (存在共同时,deny优先于allow)
@WebInitParam(name = "loginUsername", value = "root"),// 用户名
@WebInitParam(name = "loginPassword", value = "123456"),// 密码
@WebInitParam(name = "resetEnable", value = "false") // 禁用HTML页面上的“Reset All”功能
})
public class DruidStatViewServlet extends StatViewServlet {

}

添加Filter

@WebFilter(filterName = "DruidStatFilter", urlPatterns = "/*", initParams = {
@WebInitParam(name = "exclusions", value = "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*")// 忽略资源
})
public class DruidStatFilter extends WebStatFilter {

}

启用Servlet3.0注解自动扫描

添加好了@WebServlet, @WebFilter, @WebListener等之后,接下来就是启用Servlet3.0注解的自动扫描功能了,这里使用springboot提供的@ServletComponentScan注解。

@SpringBootApplication
@ServletComponentScan
public class Application extends WebMvcConfigurerAdapter {

public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}

}

数据源配置

application.properties:

spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/lpp-web
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.initialSize=5
spring.datasource.minIdle=5
spring.datasource.maxActive=20
spring.datasource.maxWait=60000
spring.datasource.minEvictableIdleTimeMillis=300000
spring.datasource.validationQuery=SELECT 1 FROM DUAL
spring.datasource.testWhileIdle=true
spring.datasource.testOnBorrow=false
spring.datasource.testOnReturn=false

监控看板

访问:http://127.0.0.1/druid/index.html

image