Add additional exclude property

The default value of `spring.devtools.restart.exclude` is quite long and
any override requires to copy/paste it to add additional exclusions. To
avoid that, a new `spring.devtools.restart.additional-exclude` property
has been added.

Both properties are now used to compute the full list of exclusions that
is used by PatternClassPathRestartStrategy.

Closes gh-3774
This commit is contained in:
Stephane Nicoll
2015-08-19 14:08:05 +02:00
parent 23693c3f6a
commit 3c91781bee
7 changed files with 95 additions and 6 deletions

View File

@@ -22,6 +22,7 @@ import java.util.List;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.NestedConfigurationProperty;
import org.springframework.util.StringUtils;
/**
* Configuration properties for developer tools.
@@ -71,10 +72,15 @@ public class DevToolsProperties {
private boolean enabled = true;
/**
* Patterns that should be excluding for triggering a full restart.
* Patterns that should be excluded from triggering a full restart.
*/
private String exclude = DEFAULT_RESTART_EXCLUDES;
/**
* Additional patterns that should be excluded from triggering a full restart.
*/
private String additionalExclude;
/**
* Amount of time (in milliseconds) to wait between polling for classpath changes.
*/
@@ -105,6 +111,17 @@ public class DevToolsProperties {
this.enabled = enabled;
}
public String[] getAllExclude() {
List<String> allExclude = new ArrayList<String>();
if (StringUtils.hasText(this.exclude)) {
allExclude.addAll(StringUtils.commaDelimitedListToSet(this.exclude));
}
if (StringUtils.hasText(this.additionalExclude)) {
allExclude.addAll(StringUtils.commaDelimitedListToSet(this.additionalExclude));
}
return allExclude.toArray(new String[allExclude.size()]);
}
public String getExclude() {
return this.exclude;
}
@@ -113,6 +130,14 @@ public class DevToolsProperties {
this.exclude = exclude;
}
public String getAdditionalExclude() {
return this.additionalExclude;
}
public void setAdditionalExclude(String additionalExclude) {
this.additionalExclude = additionalExclude;
}
public long getPollInterval() {
return this.pollInterval;
}

View File

@@ -123,7 +123,7 @@ public class LocalDevToolsAutoConfiguration {
@ConditionalOnMissingBean
public ClassPathRestartStrategy classPathRestartStrategy() {
return new PatternClassPathRestartStrategy(this.properties.getRestart()
.getExclude());
.getAllExclude());
}
@Bean

View File

@@ -33,9 +33,12 @@ public class PatternClassPathRestartStrategy implements ClassPathRestartStrategy
private final String[] excludePatterns;
public PatternClassPathRestartStrategy(String[] excludePatterns) {
this.excludePatterns = excludePatterns;
}
public PatternClassPathRestartStrategy(String excludePatterns) {
this.excludePatterns = StringUtils
.commaDelimitedListToStringArray(excludePatterns);
this(StringUtils.commaDelimitedListToStringArray(excludePatterns));
}
@Override

View File

@@ -214,7 +214,7 @@ public class RemoteClientConfiguration {
@Bean
public ClassPathRestartStrategy classPathRestartStrategy() {
return new PatternClassPathRestartStrategy(this.properties.getRestart()
.getExclude());
.getAllExclude());
}
@Bean