diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0033211..7957a2c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -24,7 +24,6 @@ env: MAVEN_OPTS: -Dhttps.protocols=TLSv1.2 -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=WARN -Dorg.slf4j.simpleLogger.showDateTime=true -Djava.awt.headless=true jobs: - # TODO test-graalvm-ce-ci: name: NativeTest CI - GraalVM CE ${{ matrix.java-version }} on ${{ matrix.os }} (This CI failure is reasonable) runs-on: ${{ matrix.os }} @@ -45,7 +44,7 @@ jobs: - name: Build Spring Boot Starter 3 test with Maven run: | ./mvnw -T1C -B -PgenerateMetadata -DskipNativeTests clean test -# ./mvnw -am -pl dynamic-datasource-spring-boot3-starter -PnativeTestInSpringBoot T1C -B clean test + ./mvnw -am -pl dynamic-datasource-spring-boot3-starter -PnativeTestInSpringBoot -T1C -B clean test test-maximum-jdk-ci: name: Test CI - JDK ${{ matrix.java-version }} on ${{ matrix.os }} runs-on: ${{ matrix.os }} diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index cecd567..8ef0abc 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -52,7 +52,7 @@ cd ./dynamic-datasource/ ./mvnw -am -pl dynamic-datasource-spring-boot3-starter -PnativeTestInSpringBoot -T1C -B clean test ``` -贡献者在提交 PR 后,位于 Github Actions 的 CI 将进行此验证。相关 CI 的失败行为是现阶段是可接受的。 +贡献者在提交 PR 后,位于 Github Actions 的 CI 将进行此验证。 请不要为 SPEL 功能编写可能的 nativeTest,参考 https://github.com/spring-projects/spring-framework/issues/29548 。如有需要, 请使用 `org.graalvm.nativeimage.imagecode` 的 System Property 屏蔽相关测试在 GraalVM Native Image 下运行。 diff --git a/dynamic-datasource-spring-boot-starter/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceAutoConfiguration.java b/dynamic-datasource-spring-boot-starter/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceAutoConfiguration.java index 4d007d6..d53c972 100644 --- a/dynamic-datasource-spring-boot-starter/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceAutoConfiguration.java +++ b/dynamic-datasource-spring-boot-starter/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceAutoConfiguration.java @@ -64,8 +64,8 @@ public class DynamicDataSourceAutoConfiguration implements InitializingBean { @Bean @ConditionalOnMissingBean - public DataSource dataSource() { - DynamicRoutingDataSource dataSource = new DynamicRoutingDataSource(); + public DataSource dataSource(List providers) { + DynamicRoutingDataSource dataSource = new DynamicRoutingDataSource(providers); dataSource.setPrimary(properties.getPrimary()); dataSource.setStrict(properties.getStrict()); dataSource.setStrategy(properties.getStrategy()); diff --git a/dynamic-datasource-spring-boot3-starter/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceAutoConfiguration.java b/dynamic-datasource-spring-boot3-starter/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceAutoConfiguration.java index e2c72b3..2725334 100644 --- a/dynamic-datasource-spring-boot3-starter/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceAutoConfiguration.java +++ b/dynamic-datasource-spring-boot3-starter/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceAutoConfiguration.java @@ -16,6 +16,7 @@ package com.baomidou.dynamic.datasource.spring.boot.autoconfigure; import com.baomidou.dynamic.datasource.DynamicRoutingDataSource; +import com.baomidou.dynamic.datasource.provider.DynamicDataSourceProvider; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.ObjectProvider; @@ -64,8 +65,8 @@ public class DynamicDataSourceAutoConfiguration implements InitializingBean { @Bean @ConditionalOnMissingBean - public DataSource dataSource() { - DynamicRoutingDataSource dataSource = new DynamicRoutingDataSource(); + public DataSource dataSource(List providers) { + DynamicRoutingDataSource dataSource = new DynamicRoutingDataSource(providers); dataSource.setPrimary(properties.getPrimary()); dataSource.setStrict(properties.getStrict()); dataSource.setStrategy(properties.getStrategy()); diff --git a/dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/DynamicRoutingDataSource.java b/dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/DynamicRoutingDataSource.java index 8729252..d719e85 100644 --- a/dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/DynamicRoutingDataSource.java +++ b/dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/DynamicRoutingDataSource.java @@ -29,7 +29,7 @@ import lombok.Setter; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.InitializingBean; -import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; import org.springframework.util.ReflectionUtils; import org.springframework.util.StringUtils; @@ -48,6 +48,7 @@ import java.util.concurrent.ConcurrentHashMap; * @since 1.0.0 */ @Slf4j +@Component public class DynamicRoutingDataSource extends AbstractRoutingDataSource implements InitializingBean, DisposableBean { private static final String UNDERLINE = "_"; @@ -59,8 +60,7 @@ public class DynamicRoutingDataSource extends AbstractRoutingDataSource implemen * 分组数据库 */ private final Map groupDataSources = new ConcurrentHashMap<>(); - @Autowired - private List providers; + private final List providers; @Setter private Class strategy = LoadBalanceDynamicDataSourceStrategy.class; @Setter @@ -72,6 +72,10 @@ public class DynamicRoutingDataSource extends AbstractRoutingDataSource implemen @Setter private Boolean seata = false; + public DynamicRoutingDataSource(List providers) { + this.providers = providers; + } + @Override protected String getPrimary() { return primary; @@ -207,7 +211,7 @@ public class DynamicRoutingDataSource extends AbstractRoutingDataSource implemen } @Override - public void destroy() throws Exception { + public void destroy() { log.info("dynamic-datasource start closing ...."); for (Map.Entry item : dataSourceMap.entrySet()) { closeDataSource(item.getKey(), item.getValue()); @@ -216,7 +220,7 @@ public class DynamicRoutingDataSource extends AbstractRoutingDataSource implemen } @Override - public void afterPropertiesSet() throws Exception { + public void afterPropertiesSet() { // 检查开启了配置但没有相关依赖 checkEnv(); // 添加并分组数据源 diff --git a/pom.xml b/pom.xml index 719d4f6..80031aa 100644 --- a/pom.xml +++ b/pom.xml @@ -378,9 +378,9 @@ maven-surefire-plugin ${maven-surefire-plugin.version} - - com.baomidou.dynamic.datasource.fixture.v1.** - + + com.baomidou.dynamic.datasource.fixture.v3.** + --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.lang.reflect=ALL-UNNAMED @@ -429,13 +429,6 @@ nativeTestInSpringBoot - - - org.junit.platform - junit-platform-launcher - test - -