瀏覽代碼

destroy() shuts down the taskScheduler

Issue gh-15735
Rob Winch 11 月之前
父節點
當前提交
4f328c9503

+ 9 - 1
core/src/main/java/org/springframework/security/authentication/ott/JdbcOneTimeTokenService.java

@@ -30,6 +30,7 @@ import java.util.function.Function;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
+import org.springframework.beans.factory.DisposableBean;
 import org.springframework.jdbc.core.ArgumentPreparedStatementSetter;
 import org.springframework.jdbc.core.JdbcOperations;
 import org.springframework.jdbc.core.PreparedStatementSetter;
@@ -55,7 +56,7 @@ import org.springframework.util.StringUtils;
  * @author Max Batischev
  * @since 6.4
  */
-public final class JdbcOneTimeTokenService implements OneTimeTokenService {
+public final class JdbcOneTimeTokenService implements OneTimeTokenService, DisposableBean {
 
 	private final Log logger = LogFactory.getLog(getClass());
 
@@ -187,6 +188,13 @@ public final class JdbcOneTimeTokenService implements OneTimeTokenService {
 		this.logger.debug("Cleaned up " + deletedCount + " expired tokens");
 	}
 
+	@Override
+	public void destroy() throws Exception {
+		if (this.taskScheduler != null) {
+			this.taskScheduler.shutdown();
+		}
+	}
+
 	/**
 	 * Sets the {@link Clock} used when generating one-time token and checking token
 	 * expiry.

+ 2 - 1
core/src/test/java/org/springframework/security/authentication/ott/JdbcOneTimeTokenServiceTests.java

@@ -68,8 +68,9 @@ public class JdbcOneTimeTokenServiceTests {
 	}
 
 	@AfterEach
-	public void tearDown() {
+	public void tearDown() throws Exception {
 		this.db.shutdown();
+		this.oneTimeTokenService.destroy();
 	}
 
 	private static EmbeddedDatabase createDb() {