diff --git a/druid-spring-boot-starter/README.md b/druid-spring-boot-starter/README.md index 9d147b8f2d..d1cc13e1e5 100644 --- a/druid-spring-boot-starter/README.md +++ b/druid-spring-boot-starter/README.md @@ -1,4 +1,5 @@ # Druid Spring Boot Starter +[![Maven Central](https://maven-badges.herokuapp.com/maven-central/com.alibaba/druid-spring-boot-starter/badge.svg)](https://maven-badges.herokuapp.com/maven-central/com.alibaba/druid-spring-boot-starter/) ## 中文 | [English](https://github.com/alibaba/druid/blob/master/druid-spring-boot-starter/README_EN.md) Druid Spring Boot Starter 用于帮助你在Spring Boot项目中轻松集成Druid数据库连接池和监控。 @@ -11,12 +12,12 @@ Druid Spring Boot Starter 用于帮助你在Spring Boot项目中轻松集成Drui com.alibaba druid-spring-boot-starter - 1.1.6 + 1.1.8 ``` ```Gradle``` ```xml - compile 'com.alibaba:druid-spring-boot-starter:1.1.6' + compile 'com.alibaba:druid-spring-boot-starter:1.1.8' ``` 2. 添加配置 @@ -111,6 +112,8 @@ spring.datasource.druid.two.max-active=20 spring.datasource.druid.two.max-wait=20000 ... ``` +注意:Spring Boot 2.X 不支持继承的方式,多数据源的话每个数据源要分开配置哦 + 2. 创建数据源 ```java @Primary diff --git a/druid-spring-boot-starter/README_EN.md b/druid-spring-boot-starter/README_EN.md index 6f541bde21..a9681921e5 100644 --- a/druid-spring-boot-starter/README_EN.md +++ b/druid-spring-boot-starter/README_EN.md @@ -1,4 +1,5 @@ # Druid Spring Boot Starter +[![Maven Central](https://maven-badges.herokuapp.com/maven-central/com.alibaba/druid-spring-boot-starter/badge.svg)](https://maven-badges.herokuapp.com/maven-central/com.alibaba/druid-spring-boot-starter/) ## English | [中文](https://github.com/alibaba/druid/blob/master/druid-spring-boot-starter/README.md) Spring Boot with Druid support, help you simplify Druid config in Spring Boot. @@ -11,12 +12,12 @@ Spring Boot with Druid support, help you simplify Druid config in Spring Boot. com.alibaba druid-spring-boot-starter - 1.1.6 + 1.1.8 ``` ```Gradle``` ```xml - compile 'com.alibaba:druid-spring-boot-starter:1.1.6' + compile 'com.alibaba:druid-spring-boot-starter:1.1.8' ``` 2. Add configuration properties. ```xml @@ -105,6 +106,7 @@ spring.datasource.druid.two.max-active=20 spring.datasource.druid.two.max-wait=20000 ... ``` +Warning: Spring Boot 2.X not support extents, please configure one by one. 2. Create DruidDataSource ```java @Primary diff --git a/druid-spring-boot-starter/pom.xml b/druid-spring-boot-starter/pom.xml index a2068e47ac..c760c59a60 100644 --- a/druid-spring-boot-starter/pom.xml +++ b/druid-spring-boot-starter/pom.xml @@ -4,7 +4,7 @@ 4.0.0 com.alibaba druid-spring-boot-starter - 1.1.7 + 1.1.8 jar druid-spring-boot-starter Spring Boot with Druid support,help you simplify Druid config in Spring Boot. @@ -12,7 +12,7 @@ 1.1.7 - 1.5.10.RELEASE + 2.0.0.RC1 @@ -51,6 +51,7 @@ org.springframework.boot spring-boot-autoconfigure + 2.0.0.RC1 @@ -58,16 +59,7 @@ spring-boot-configuration-processor true - - org.springframework.boot - spring-boot-actuator - true - - - org.springframework - spring-webmvc - true - + javax.servlet javax.servlet-api @@ -125,8 +117,8 @@ maven-compiler-plugin 2.1 - 1.7 - 1.7 + 1.8 + 1.8 @@ -162,7 +154,7 @@ UTF-8 - + diff --git a/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidDataSourceAutoConfigure.java b/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidDataSourceAutoConfigure.java index 5b0bb1e53b..c8ac158acc 100644 --- a/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidDataSourceAutoConfigure.java +++ b/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidDataSourceAutoConfigure.java @@ -18,7 +18,6 @@ package com.alibaba.druid.spring.boot.autoconfigure; import javax.sql.DataSource; import com.alibaba.druid.pool.DruidDataSource; -import com.alibaba.druid.spring.boot.autoconfigure.actuator.ActuatorConfiguration; import com.alibaba.druid.spring.boot.autoconfigure.properties.DruidStatProperties; import com.alibaba.druid.spring.boot.autoconfigure.stat.DruidFilterConfiguration; import com.alibaba.druid.spring.boot.autoconfigure.stat.DruidSpringAopConfiguration; @@ -46,13 +45,12 @@ import org.springframework.context.annotation.Import; @Import({DruidSpringAopConfiguration.class, DruidStatViewServletConfiguration.class, DruidWebStatFilterConfiguration.class, - DruidFilterConfiguration.class, - ActuatorConfiguration.class}) + DruidFilterConfiguration.class}) public class DruidDataSourceAutoConfigure { private static final Logger LOGGER = LoggerFactory.getLogger(DruidDataSourceAutoConfigure.class); - @Bean + @Bean(initMethod = "init") @ConditionalOnMissingBean public DataSource dataSource() { LOGGER.info("Init DruidDataSource"); diff --git a/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/actuator/ActuatorConfiguration.java b/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/actuator/ActuatorConfiguration.java deleted file mode 100644 index 7dc3cddd79..0000000000 --- a/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/actuator/ActuatorConfiguration.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright 1999-2017 Alibaba Group Holding Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.alibaba.druid.spring.boot.autoconfigure.actuator; - -import javax.sql.DataSource; - -import com.alibaba.druid.pool.DruidDataSource; -import com.alibaba.druid.spring.boot.autoconfigure.actuator.endpoint.DruidDataSourceMvcEndpoint; -import com.alibaba.druid.spring.boot.autoconfigure.actuator.metadata.DruidDataSourcePoolMetadata; - -import org.springframework.boot.actuate.condition.ConditionalOnEnabledEndpoint; -import org.springframework.boot.actuate.endpoint.mvc.MvcEndpoint; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; -import org.springframework.boot.autoconfigure.jdbc.metadata.DataSourcePoolMetadata; -import org.springframework.boot.autoconfigure.jdbc.metadata.DataSourcePoolMetadataProvider; -import org.springframework.boot.autoconfigure.jdbc.metadata.DataSourcePoolMetadataProvidersConfiguration; -import org.springframework.context.annotation.Bean; - -/** - * @author lihengming [89921218@qq.com] - * - * Spring Boot Actuator support. - */ -public class ActuatorConfiguration { - /** - * Register the {@link DataSourcePoolMetadataProvider} instances to support DataSource metrics. - * - * @see DataSourcePoolMetadataProvidersConfiguration - */ - @Bean - public DataSourcePoolMetadataProvider druidDataSourcePoolMetadataProvider() { - return new DataSourcePoolMetadataProvider() { - @Override - public DataSourcePoolMetadata getDataSourcePoolMetadata(DataSource dataSource) { - if (dataSource instanceof DruidDataSource) { - return new DruidDataSourcePoolMetadata((DruidDataSource)dataSource); - } - return null; - } - }; - } - - /** - * Register DruidDataSourceMvcEndpoint to support Spring Boot Actuator Endpoints. - * - * @see MvcEndpoint - */ - @Bean - @ConditionalOnMissingBean - @ConditionalOnWebApplication - @ConditionalOnEnabledEndpoint("druid") - public DruidDataSourceMvcEndpoint druidDataSourceMvcEndpoint() { - return new DruidDataSourceMvcEndpoint(); - } -} diff --git a/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/actuator/endpoint/DruidDataSourceMvcEndpoint.java b/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/actuator/endpoint/DruidDataSourceMvcEndpoint.java deleted file mode 100644 index 7da83b0e57..0000000000 --- a/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/actuator/endpoint/DruidDataSourceMvcEndpoint.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 1999-2017 Alibaba Group Holding Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.alibaba.druid.spring.boot.autoconfigure.actuator.endpoint; - -import com.alibaba.druid.stat.DruidStatManagerFacade; - -import org.springframework.boot.actuate.endpoint.mvc.AbstractMvcEndpoint; -import org.springframework.boot.actuate.endpoint.mvc.ActuatorMediaTypes; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.http.MediaType; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.ResponseBody; - -/** - * @author lihengming [89921218@qq.com] - */ -@ConfigurationProperties(prefix = "endpoints.druid") -public class DruidDataSourceMvcEndpoint extends AbstractMvcEndpoint { - - public DruidDataSourceMvcEndpoint() { - super("/actuator/druid", true); - } - - @ResponseBody - @GetMapping( produces = {ActuatorMediaTypes.APPLICATION_ACTUATOR_V1_JSON_VALUE, - MediaType.APPLICATION_JSON_VALUE}) - public Object invoke() { - return DruidStatManagerFacade.getInstance().getDataSourceStatDataList(); - } - -} \ No newline at end of file diff --git a/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/actuator/metadata/DruidDataSourcePoolMetadata.java b/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/actuator/metadata/DruidDataSourcePoolMetadata.java deleted file mode 100644 index cb868f41fa..0000000000 --- a/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/actuator/metadata/DruidDataSourcePoolMetadata.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright 1999-2017 Alibaba Group Holding Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.alibaba.druid.spring.boot.autoconfigure.actuator.metadata; - -import com.alibaba.druid.pool.DruidDataSource; - -import org.springframework.boot.autoconfigure.jdbc.metadata.AbstractDataSourcePoolMetadata; -import org.springframework.boot.autoconfigure.jdbc.metadata.DataSourcePoolMetadata; - -/** - * @author lihengming [89921218@qq.com] - */ -public class DruidDataSourcePoolMetadata extends AbstractDataSourcePoolMetadata { - /** - * Create an instance with the data source to use. - * - * @param dataSource the data source - */ - public DruidDataSourcePoolMetadata(DruidDataSource dataSource) { - super(dataSource); - } - - @Override - public Integer getActive() { - return getDataSource().getActiveCount(); - } - - @Override - public Integer getMax() { - return getDataSource().getMaxActive(); - } - - @Override - public Integer getMin() { - return getDataSource().getMinIdle(); - } - - @Override - public String getValidationQuery() { - return getDataSource().getValidationQuery(); - } -} diff --git a/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/demo/configurer/MultiDataSourceConfigurer.java b/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/demo/configurer/MultiDataSourceConfigurer.java index 7235a0aa5a..0b61ca5ff7 100644 --- a/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/demo/configurer/MultiDataSourceConfigurer.java +++ b/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/demo/configurer/MultiDataSourceConfigurer.java @@ -13,12 +13,13 @@ import javax.sql.DataSource; @Profile("multi-datasource") public class MultiDataSourceConfigurer { @Primary - @Bean + @Bean(initMethod = "init") @ConfigurationProperties("spring.datasource.druid.one") public DataSource dataSourceOne(){ return DruidDataSourceBuilder.create().build(); } - @Bean + + @Bean(initMethod = "init") @ConfigurationProperties("spring.datasource.druid.two") public DataSource dataSourceTwo(){ return DruidDataSourceBuilder.create().build(); diff --git a/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/demo/service/UserServiceImpl.java b/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/demo/service/UserServiceImpl.java index 3d0b5843a5..07d24d4774 100644 --- a/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/demo/service/UserServiceImpl.java +++ b/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/demo/service/UserServiceImpl.java @@ -13,7 +13,7 @@ public class UserServiceImpl implements UserService { @Override public User findById(Long id) { - return userDao.findOne(id); + return userDao.findById(id).get(); } } diff --git a/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/testcase/DruidDataSourceTestCase.java b/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/testcase/DruidDataSourceTestCase.java index 91625369b9..0bde4fcac6 100644 --- a/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/testcase/DruidDataSourceTestCase.java +++ b/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/testcase/DruidDataSourceTestCase.java @@ -17,12 +17,18 @@ package com.alibaba.druid.spring.boot.testcase; import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure; +import com.alibaba.druid.spring.boot.demo.DemoApplication; + import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.util.EnvironmentTestUtils; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; +import org.springframework.test.context.junit4.SpringRunner; +import javax.annotation.Resource; import javax.sql.DataSource; import static org.assertj.core.api.Assertions.assertThat; @@ -30,69 +36,35 @@ import static org.assertj.core.api.Assertions.assertThat; /** * @author lihengming [89921218@qq.com] */ +@RunWith(SpringRunner.class) +@SpringBootTest(classes = DemoApplication.class) public class DruidDataSourceTestCase { - private static final String PREFIX = "spring.datasource.druid."; - - private final AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(); + @Resource + private DruidDataSource dataSource; @Test public void testDataSourceExists() throws Exception { - this.context.register(DruidDataSourceConfiguration.class); - this.context.refresh(); - EnvironmentTestUtils.addEnvironment(this.context, PREFIX + "url=jdbc:h2:file:./demo-db"); - assertThat(this.context.getBean(DataSource.class)).isNotNull(); - assertThat(this.context.getBean(DruidDataSource.class)).isNotNull(); + assertThat(dataSource).isNotNull(); } @Test public void testDataSourcePropertiesOverridden() throws Exception { - this.context.register(DruidDataSourceConfiguration.class); - EnvironmentTestUtils.addEnvironment(this.context, PREFIX + "url=jdbc:h2:file:./demo-db"); - EnvironmentTestUtils.addEnvironment(this.context, PREFIX + "initial-size=2"); - EnvironmentTestUtils.addEnvironment(this.context, PREFIX + "max-active=30"); - EnvironmentTestUtils.addEnvironment(this.context, PREFIX + "min-idle=2"); - EnvironmentTestUtils.addEnvironment(this.context, PREFIX + "max-wait=1234"); - EnvironmentTestUtils.addEnvironment(this.context, PREFIX + "pool-prepared-statements=true"); - //EnvironmentTestUtils.addEnvironment(this.context, PREFIX + "max-open-prepared-statements=5");//Duplicated with following - EnvironmentTestUtils.addEnvironment(this.context, PREFIX + "max-pool-prepared-statement-per-connection-size=5"); - EnvironmentTestUtils.addEnvironment(this.context, PREFIX + "validation-query=select 1"); - EnvironmentTestUtils.addEnvironment(this.context, PREFIX + "validation-query-timeout=1"); - EnvironmentTestUtils.addEnvironment(this.context, PREFIX + "test-on-borrow=true"); - EnvironmentTestUtils.addEnvironment(this.context, PREFIX + "test-while-idle=true"); - EnvironmentTestUtils.addEnvironment(this.context, PREFIX + "test-on-return=true"); - EnvironmentTestUtils.addEnvironment(this.context, PREFIX + "time-between-eviction-runs-millis=10000"); - EnvironmentTestUtils.addEnvironment(this.context, PREFIX + "min-evictable-idle-time-millis=30001"); - EnvironmentTestUtils.addEnvironment(this.context, PREFIX + "connection-properties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000"); - EnvironmentTestUtils.addEnvironment(this.context, PREFIX + "async-close-connection-enable=true"); - - this.context.refresh(); - DruidDataSource ds = this.context.getBean(DruidDataSource.class); - - assertThat(ds.getUrl()).isEqualTo("jdbc:h2:file:./demo-db"); - assertThat(ds.getInitialSize()).isEqualTo(2); - assertThat(ds.getMaxActive()).isEqualTo(30); - assertThat(ds.getMinIdle()).isEqualTo(2); - assertThat(ds.getMaxWait()).isEqualTo(1234); - assertThat(ds.isPoolPreparedStatements()).isTrue(); - //assertThat(ds.getMaxOpenPreparedStatements()).isEqualTo(5); //Duplicated with following - assertThat(ds.getMaxPoolPreparedStatementPerConnectionSize()).isEqualTo(5); - assertThat(ds.getValidationQuery()).isEqualTo("select 1"); - assertThat(ds.getValidationQueryTimeout()).isEqualTo(1); - assertThat(ds.isTestWhileIdle()).isTrue(); - assertThat(ds.isTestOnBorrow()).isTrue(); - assertThat(ds.isTestOnReturn()).isTrue(); - assertThat(ds.getTimeBetweenEvictionRunsMillis()).isEqualTo(10000); - assertThat(ds.getMinEvictableIdleTimeMillis()).isEqualTo(30001); - assertThat(ds.getConnectProperties().size()).isEqualTo(2); - assertThat(ds.isAsyncCloseConnectionEnable()).isEqualTo(true); - } - - - @Configuration - @Import(DruidDataSourceAutoConfigure.class) - protected static class DruidDataSourceConfiguration { - - + assertThat(dataSource.getUrl()).isEqualTo("jdbc:h2:file:./demo-db"); + assertThat(dataSource.getInitialSize()).isEqualTo(2); + assertThat(dataSource.getMaxActive()).isEqualTo(30); + assertThat(dataSource.getMinIdle()).isEqualTo(2); + assertThat(dataSource.getMaxWait()).isEqualTo(1234); + assertThat(dataSource.isPoolPreparedStatements()).isTrue(); + //assertThat(dataSource.getMaxOpenPreparedStatements()).isEqualTo(5); //Duplicated with following + assertThat(dataSource.getMaxPoolPreparedStatementPerConnectionSize()).isEqualTo(5); + assertThat(dataSource.getValidationQuery()).isEqualTo("select 1"); + assertThat(dataSource.getValidationQueryTimeout()).isEqualTo(1); + assertThat(dataSource.isTestWhileIdle()).isTrue(); + assertThat(dataSource.isTestOnBorrow()).isTrue(); + assertThat(dataSource.isTestOnReturn()).isTrue(); + assertThat(dataSource.getTimeBetweenEvictionRunsMillis()).isEqualTo(10000); + assertThat(dataSource.getMinEvictableIdleTimeMillis()).isEqualTo(30001); + assertThat(dataSource.isAsyncCloseConnectionEnable()).isEqualTo(true); } } diff --git a/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/testcase/DruidFilterTestCase.java b/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/testcase/DruidFilterTestCase.java index 416dd0128b..58598fb176 100644 --- a/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/testcase/DruidFilterTestCase.java +++ b/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/testcase/DruidFilterTestCase.java @@ -27,6 +27,6 @@ public class DruidFilterTestCase { @Test public void test() { List filters = dataSource.getProxyFilters(); - assertThat(filters.size()).isEqualTo(4); + assertThat(filters.size()).isEqualTo(3); } } diff --git a/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/testcase/DruidMultiDataSourceTestCase.java b/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/testcase/DruidMultiDataSourceTestCase.java index bfdb5ad813..61f9e49e27 100644 --- a/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/testcase/DruidMultiDataSourceTestCase.java +++ b/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/testcase/DruidMultiDataSourceTestCase.java @@ -44,7 +44,6 @@ public class DruidMultiDataSourceTestCase { @Test public void testDataSourceOne() throws SQLException { - dataSourceOne.init(); assertThat(dataSourceOne.getUrl()).isEqualTo("jdbc:h2:file:./demo-db"); assertThat(dataSourceOne.getUsername()).isEqualTo("sa"); @@ -58,7 +57,6 @@ public class DruidMultiDataSourceTestCase { } @Test public void testDataSourceTwo() throws SQLException { - dataSourceTwo.init(); assertThat(dataSourceTwo.getUrl()).isEqualTo("jdbc:h2:file:./demo-db"); assertThat(dataSourceTwo.getUsername()).isEqualTo("sa"); diff --git a/druid-spring-boot-starter/src/test/resources/application-filter.properties b/druid-spring-boot-starter/src/test/resources/application-filter.properties index aa19066789..5c041eb0d3 100644 --- a/druid-spring-boot-starter/src/test/resources/application-filter.properties +++ b/druid-spring-boot-starter/src/test/resources/application-filter.properties @@ -1,4 +1,4 @@ -# 只有下面三个是必填项,其他配置不是必须的 +# 只有下面三个是必填项(使用内嵌数据库的话这三个也可以不用填,会使用默认配置),其他配置不是必须的 spring.datasource.url=jdbc:h2:file:./demo-db spring.datasource.username=sa spring.datasource.password=sa @@ -8,7 +8,8 @@ spring.datasource.driver-class-name=org.h2.Driver spring.datasource.druid.filter.stat.enabled=true spring.datasource.druid.filter.config.enabled=true spring.datasource.druid.filter.encoding.enabled=true -spring.datasource.druid.filter.wall.enabled=true +#spring.datasource.druid.filter.wall.enabled=true + # JPA diff --git a/druid-spring-boot-starter/src/test/resources/application-multi-datasource.properties b/druid-spring-boot-starter/src/test/resources/application-multi-datasource.properties index 2c9120e4d9..16b56d300a 100644 --- a/druid-spring-boot-starter/src/test/resources/application-multi-datasource.properties +++ b/druid-spring-boot-starter/src/test/resources/application-multi-datasource.properties @@ -1,4 +1,4 @@ -# 只有下面三个是必填项,其他配置不是必须的 +# 只有下面三个是必填项(使用内嵌数据库的话这三个也可以不用填,会使用默认配置),其他配置不是必须的 spring.datasource.url=jdbc:h2:file:./demo-db spring.datasource.username=sa spring.datasource.password=sa @@ -8,13 +8,14 @@ spring.datasource.driver-class-name=org.h2.Driver # Druid 数据源配置,继承spring.datasource.* 配置,相同则覆盖 spring.datasource.druid.initial-size=5 spring.datasource.druid.max-active=5 -spring.datasource.druid.aop-patterns=com.alibaba.druid.spring.boot.demo.service.* # Druid 数据源 1 配置,继承spring.datasource.druid.* 配置,相同则覆盖 +spring.datasource.druid.one.initial-size=5 spring.datasource.druid.one.max-active=10 spring.datasource.druid.one.max-wait=10000 # Druid 数据源 2 配置,继承spring.datasource.druid.* 配置,相同则覆盖 +spring.datasource.druid.two.initial-size=5 spring.datasource.druid.two.max-active=20 spring.datasource.druid.two.max-wait=20000 @@ -25,3 +26,5 @@ spring.jpa.hibernate.ddl-auto=create-drop # 更多配置属性见 DruidDataSource 内成员变量(只要有set方法便支持),或者根据IDE提示,或者查看官方文档 # 注:配置文件可以根据习惯更换为 .yml + +############强烈注意:Spring Boot 2.0之后不再支持继承的方式,每个数据源要分开配置哦 diff --git a/druid-spring-boot-starter/src/test/resources/application.properties b/druid-spring-boot-starter/src/test/resources/application.properties index 3ba448fb97..31a15c2b2a 100644 --- a/druid-spring-boot-starter/src/test/resources/application.properties +++ b/druid-spring-boot-starter/src/test/resources/application.properties @@ -1,4 +1,4 @@ -# 只有下面三个是必填项(使用内嵌数据库的话这三个也可以不用填),其他配置不是必须的 +# 只有下面三个是必填项(使用内嵌数据库的话这三个也可以不用填,会使用默认配置),其他配置不是必须的 spring.datasource.url=jdbc:h2:file:./demo-db spring.datasource.username=sa spring.datasource.password=sa @@ -6,12 +6,23 @@ spring.datasource.password=sa spring.datasource.driver-class-name=org.h2.Driver #Druid 数据源配置,继承spring.datasource.* 配置,相同则覆盖 -spring.datasource.druid.username=sa -spring.datasource.druid.password=sa -spring.datasource.druid.initial-size=5 -spring.datasource.druid.max-active=10 -spring.datasource.druid.min-evictable-idle-time-millis=100000 +spring.datasource.druid.initial-size=2 +spring.datasource.druid.max-active=30 +spring.datasource.druid.min-idle=2 +spring.datasource.druid.max-wait=1234 +spring.datasource.druid.pool-prepared-statements=true +spring.datasource.druid.max-pool-prepared-statement-per-connection-size=5 +#spring.datasource.druid.max-open-prepared-statements= #等价于上面的max-pool-prepared-statement-per-connection-size spring.datasource.druid.validation-query=select 1 +spring.datasource.druid.validation-query-timeout=1 +spring.datasource.druid.test-on-borrow=true +spring.datasource.druid.test-on-return=true +spring.datasource.druid.test-while-idle=true +spring.datasource.druid.time-between-eviction-runs-millis=10000 +spring.datasource.druid.min-evictable-idle-time-millis=30001 +spring.datasource.druid.async-close-connection-enable=true + + spring.datasource.druid.aop-patterns=com.alibaba.druid.spring.boot.demo.service.* # 自定义StatFilter 配置 其他 Filter 不再演示 @@ -25,11 +36,6 @@ spring.jpa.hibernate.ddl-auto=create-drop # 更多配置属性见 DruidDataSource 内成员变量(只要有set方法便支持),或者根据IDE提示,或者查看官方文档 -# 启用endpoint,默认访问地址:/actuator/druid,可以使用endpoints.druid.path=自定义终端地址 -endpoints.druid.enabled=true -# 默认需要安全认证才可以访问,可以用下面两种方法之一来禁用安全认证,详情见 Spring Boot 官方文档 -endpoints.druid.sensitive=false -# management.security.enabled=false -# 注:配置文件可以根据习惯更换为 .yml +