这二天在搭建一个单服务项目,所以就想着在里面加点数据监控之类的东西。然后就看到了
druid
,那么下面我们就从配置开始
-
首先我们的
pom
文件里面配置maven
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.10</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>6.0.6</version> </dependency>
-
然后在在我们
application.yml
里面配置数据spring: datasource: type: com.alibaba.druid.pool.DruidDataSource druid: filter: stat,wall,logging driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&useSSL=false username: root password: root initial-size: 1 min-idle: 1 max-active: 20 max-wait: 60000 time-between-eviction-runs-millis: 60000 min-evictable-idle-time-millis: 300000 validation-query: SELECT 'X' test-while-idle: true test-on-borrow: false test-on-return: false pool-prepared-statements: false max-pool-prepared-statement-per-connection-size: 20
-
接下来就是代码部分了
-
新建
DruidProperties
@Data @ConfigurationProperties(prefix = "spring.datasource.druid") public class DruidProperties { private String url; private String username; 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; private String filters; private String connectionProperties; }
-
新建
TestCoreConfig
@Configuration @EnableConfigurationProperties({DruidProperties.class}) public class TestCoreConfig { }
-
新建
DruidConfiguration
@Slf4j @Configuration public class DruidConfiguration { @Bean public ServletRegistrationBean druidServlet() { log.info("init Druid Servlet Configuration"); ServletRegistrationBean<StatViewServlet> servletRegistrationBean = new ServletRegistrationBean<>(new StatViewServlet(), "/druid/*"); //IP白名单 servletRegistrationBean.addInitParameter("allow", "192.168.0.119"); //IP黑名单 servletRegistrationBean.addInitParameter("deny", "192.168.1.100"); //控制台管理用户 servletRegistrationBean.addInitParameter("loginUsername", "admin"); servletRegistrationBean.addInitParameter("loginPassword", "admin"); //是否能够重置数据 禁用HTML页面上的“Reset All”功能 servletRegistrationBean.addInitParameter("resetEnable", "false"); return servletRegistrationBean; } @Bean public FilterRegistrationBean filterRegistrationBean() { FilterRegistrationBean<WebStatFilter> filterRegistrationBean = new FilterRegistrationBean<>(new WebStatFilter()); filterRegistrationBean.addUrlPatterns("/*"); filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*png,*.css,*.ico,/druid/*"); return filterRegistrationBean; } @Autowired private DruidProperties druidProperties; @Bean @Primary public DataSource dataSource() { DruidDataSource druidDataSource = new DruidDataSource(); druidDataSource.setUrl(druidProperties.getUrl()); druidDataSource.setUsername(druidProperties.getUsername()); druidDataSource.setPassword(druidProperties.getPassword()); druidDataSource.setDriverClassName(druidProperties.getDriverClassName()); druidDataSource.setInitialSize(druidProperties.getInitialSize()); druidDataSource.setMinIdle(druidProperties.getMinIdle()); druidDataSource.setMaxActive(druidProperties.getMaxActive()); druidDataSource.setMaxWait(druidProperties.getMaxWait()); druidDataSource.setTimeBetweenEvictionRunsMillis(druidProperties.getTimeBetweenEvictionRunsMillis()); druidDataSource.setMinEvictableIdleTimeMillis(druidProperties.getMinEvictableIdleTimeMillis()); druidDataSource.setValidationQuery(druidProperties.getValidationQuery()); druidDataSource.setTestWhileIdle(druidProperties.isTestWhileIdle()); druidDataSource.setTestOnBorrow(druidProperties.isTestOnBorrow()); druidDataSource.setTestOnReturn(druidProperties.isTestOnReturn()); druidDataSource.setPoolPreparedStatements(druidProperties.isPoolPreparedStatements()); druidDataSource.setMaxPoolPreparedStatementPerConnectionSize(druidProperties.getMaxPoolPreparedStatementPerConnectionSize()); try { druidDataSource.setFilters(druidProperties.getFilters()); } catch (SQLException e) { System.err.println("druid configuration initialization filter: " + e); } return druidDataSource; } }
-
-
创建主类
TestStartApplication
@Slf4j @SpringBootApplication public class TestStartApplication{ public static void main(String[] args) { ConfigurableApplicationContext context = SpringApplication.run(BootAdminStartApplication.class, args); String serverPort = context.getEnvironment().getProperty("server.port"); log.info("boot admin started at http://localhost:" + serverPort); } }
-
启动主类访问
http://localhost:9999/druid/
-
用刚才设置的
admin/admin
登录就好了