diff --git a/spring-boot-project/spring-boot-devtools/src/main/java/org/springframework/boot/devtools/remote/client/RemoteClientConfiguration.java b/spring-boot-project/spring-boot-devtools/src/main/java/org/springframework/boot/devtools/remote/client/RemoteClientConfiguration.java index 0ddae6dfa4..51f9cd06ff 100644 --- a/spring-boot-project/spring-boot-devtools/src/main/java/org/springframework/boot/devtools/remote/client/RemoteClientConfiguration.java +++ b/spring-boot-project/spring-boot-devtools/src/main/java/org/springframework/boot/devtools/remote/client/RemoteClientConfiguration.java @@ -28,7 +28,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.InitializingBean; -import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.ObjectProvider; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; @@ -131,20 +131,21 @@ public class RemoteClientConfiguration implements InitializingBean { @ConditionalOnProperty(prefix = "spring.devtools.livereload", name = "enabled", matchIfMissing = true) static class LiveReloadConfiguration { - @Autowired - private DevToolsProperties properties; + private final DevToolsProperties properties; - @Autowired(required = false) - private LiveReloadServer liveReloadServer; + private final ClientHttpRequestFactory clientHttpRequestFactory; - @Autowired - private ClientHttpRequestFactory clientHttpRequestFactory; - - @Value("${remoteUrl}") - private String remoteUrl; + private final String remoteUrl; private ExecutorService executor = Executors.newSingleThreadExecutor(); + LiveReloadConfiguration(DevToolsProperties properties, ClientHttpRequestFactory clientHttpRequestFactory, + @Value("${remoteUrl}") String remoteUrl) { + this.properties = properties; + this.clientHttpRequestFactory = clientHttpRequestFactory; + this.remoteUrl = remoteUrl; + } + @Bean @RestartScope @ConditionalOnMissingBean @@ -164,8 +165,8 @@ public class RemoteClientConfiguration implements InitializingBean { } @Bean - OptionalLiveReloadServer optionalLiveReloadServer() { - return new OptionalLiveReloadServer(this.liveReloadServer); + OptionalLiveReloadServer optionalLiveReloadServer(ObjectProvider liveReloadServer) { + return new OptionalLiveReloadServer(liveReloadServer.getIfAvailable()); } final ExecutorService getExecutor() { @@ -181,11 +182,11 @@ public class RemoteClientConfiguration implements InitializingBean { @ConditionalOnProperty(prefix = "spring.devtools.remote.restart", name = "enabled", matchIfMissing = true) static class RemoteRestartClientConfiguration { - @Autowired - private DevToolsProperties properties; + private final DevToolsProperties properties; - @Value("${remoteUrl}") - private String remoteUrl; + RemoteRestartClientConfiguration(DevToolsProperties properties) { + this.properties = properties; + } @Bean ClassPathFileSystemWatcher classPathFileSystemWatcher(FileSystemWatcherFactory fileSystemWatcherFactory, @@ -220,8 +221,9 @@ public class RemoteClientConfiguration implements InitializingBean { } @Bean - ClassPathChangeUploader classPathChangeUploader(ClientHttpRequestFactory requestFactory) { - String url = this.remoteUrl + this.properties.getRemote().getContextPath() + "/restart"; + ClassPathChangeUploader classPathChangeUploader(ClientHttpRequestFactory requestFactory, + @Value("${remoteUrl}") String remoteUrl) { + String url = remoteUrl + this.properties.getRemote().getContextPath() + "/restart"; return new ClassPathChangeUploader(url, requestFactory); }