From 723fa1353a91d849334969e20d7423cc4df77c10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henning=20P=C3=B6ttker?= Date: Mon, 17 May 2021 23:45:38 +0200 Subject: [PATCH] Mark TaskRepositoryInitializer as not lazy --- .../SimpleTaskAutoConfiguration.java | 8 ++--- .../SimpleTaskAutoConfigurationTests.java | 29 ++++++++++++------- 2 files changed, 21 insertions(+), 16 deletions(-) diff --git a/spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/SimpleTaskAutoConfiguration.java b/spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/SimpleTaskAutoConfiguration.java index afa1f9a8..f20e528e 100644 --- a/spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/SimpleTaskAutoConfiguration.java +++ b/spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/SimpleTaskAutoConfiguration.java @@ -1,5 +1,5 @@ /* - * Copyright 2015-2020 the original author or authors. + * Copyright 2015-2021 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -27,7 +27,6 @@ import org.apache.commons.logging.LogFactory; import org.springframework.aop.scope.ScopedProxyUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.ApplicationArguments; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.cloud.task.repository.TaskExplorer; @@ -38,6 +37,7 @@ import org.springframework.cloud.task.repository.support.TaskRepositoryInitializ import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Lazy; import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.annotation.EnableTransactionManagement; import org.springframework.util.CollectionUtils; @@ -68,9 +68,6 @@ public class SimpleTaskAutoConfiguration { @Autowired private ConfigurableApplicationContext context; - @Autowired(required = false) - private ApplicationArguments applicationArguments; - @Autowired private TaskProperties taskProperties; @@ -103,6 +100,7 @@ public class SimpleTaskAutoConfiguration { } @Bean + @Lazy(false) public TaskRepositoryInitializer taskRepositoryInitializer() { TaskRepositoryInitializer taskRepositoryInitializer = new TaskRepositoryInitializer( this.taskProperties); diff --git a/spring-cloud-task-core/src/test/java/org/springframework/cloud/task/SimpleTaskAutoConfigurationTests.java b/spring-cloud-task-core/src/test/java/org/springframework/cloud/task/SimpleTaskAutoConfigurationTests.java index 3fed96b3..9680e1a4 100644 --- a/spring-cloud-task-core/src/test/java/org/springframework/cloud/task/SimpleTaskAutoConfigurationTests.java +++ b/spring-cloud-task-core/src/test/java/org/springframework/cloud/task/SimpleTaskAutoConfigurationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2015-2019 the original author or authors. + * Copyright 2015-2021 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,7 +18,6 @@ package org.springframework.cloud.task; import javax.sql.DataSource; -import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.function.Executable; @@ -30,6 +29,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.config.BeanDefinitionHolder; import org.springframework.beans.factory.support.BeanDefinitionRegistry; import org.springframework.beans.factory.support.GenericBeanDefinition; +import org.springframework.boot.LazyInitializationBeanFactoryPostProcessor; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration; import org.springframework.boot.autoconfigure.jdbc.EmbeddedDataSourceConfiguration; @@ -59,15 +59,6 @@ import static org.mockito.Mockito.mock; */ public class SimpleTaskAutoConfigurationTests { - private ConfigurableApplicationContext context; - - @AfterEach - public void tearDown() { - if (this.context != null) { - this.context.close(); - } - } - @Test public void testRepository() { ApplicationContextRunner applicationContextRunner = new ApplicationContextRunner() @@ -115,6 +106,22 @@ public class SimpleTaskAutoConfigurationTests { }); } + @Test + public void testRepositoryInitializedWithLazyInitialization() { + ApplicationContextRunner applicationContextRunner = new ApplicationContextRunner() + .withInitializer((context) -> context + .addBeanFactoryPostProcessor(new LazyInitializationBeanFactoryPostProcessor())) + .withConfiguration(AutoConfigurations.of( + EmbeddedDataSourceConfiguration.class, + PropertyPlaceholderAutoConfiguration.class, + SimpleTaskAutoConfiguration.class, SingleTaskConfiguration.class)) + .withUserConfiguration(TaskLifecycleListenerConfiguration.class); + applicationContextRunner.run((context) -> { + TaskExplorer taskExplorer = context.getBean(TaskExplorer.class); + assertThat(taskExplorer.getTaskExecutionCount()).isEqualTo(1L); + }); + } + @Test public void testRepositoryNotInitialized() { ApplicationContextRunner applicationContextRunner = new ApplicationContextRunner()