Simplify property validation sample and document need for static bean method
Closes gh-6627
This commit is contained in:
parent
43e020ef7b
commit
be33827f49
|
|
@ -1070,9 +1070,13 @@ as `@Valid` to trigger its validation. For example, building upon the above
|
||||||
----
|
----
|
||||||
|
|
||||||
You can also add a custom Spring `Validator` by creating a bean definition called
|
You can also add a custom Spring `Validator` by creating a bean definition called
|
||||||
`configurationPropertiesValidator`. There is a
|
`configurationPropertiesValidator`. The `@Bean` method should be declared `static`. The
|
||||||
{github-code}/spring-boot-samples/spring-boot-sample-property-validation[Validation sample]
|
configuration properties validator is created very early in the application's lifecycle
|
||||||
so you can see how to set things up.
|
and declaring the `@Bean` method as static allows the bean to be created without having to
|
||||||
|
instantiate the `@Configuration` class. This avoids any problems that may be caused by
|
||||||
|
early instantiation. There is a
|
||||||
|
{github-code}/spring-boot-samples/spring-boot-sample-property-validation[property
|
||||||
|
validation sample] so you can see how to set things up.
|
||||||
|
|
||||||
TIP: The `spring-boot-actuator` module includes an endpoint that exposes all
|
TIP: The `spring-boot-actuator` module includes an endpoint that exposes all
|
||||||
`@ConfigurationProperties` beans. Simply point your web browser to `/configprops`
|
`@ConfigurationProperties` beans. Simply point your web browser to `/configprops`
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2012-2015 the original author or authors.
|
* Copyright 2012-2016 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|
@ -16,29 +16,25 @@
|
||||||
|
|
||||||
package sample.propertyvalidation;
|
package sample.propertyvalidation;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.boot.CommandLineRunner;
|
import org.springframework.boot.CommandLineRunner;
|
||||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
import org.springframework.boot.builder.SpringApplicationBuilder;
|
import org.springframework.boot.builder.SpringApplicationBuilder;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Profile;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import org.springframework.validation.Validator;
|
import org.springframework.validation.Validator;
|
||||||
|
|
||||||
@SpringBootApplication
|
@SpringBootApplication
|
||||||
public class SamplePropertyValidationApplication {
|
public class SamplePropertyValidationApplication implements CommandLineRunner {
|
||||||
|
|
||||||
@Bean
|
private final SampleProperties properties;
|
||||||
public Validator configurationPropertiesValidator() {
|
|
||||||
return new SamplePropertiesValidator();
|
public SamplePropertyValidationApplication(SampleProperties properties) {
|
||||||
|
this.properties = properties;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Service
|
@Bean
|
||||||
@Profile("app")
|
public static Validator configurationPropertiesValidator() {
|
||||||
static class Startup implements CommandLineRunner {
|
return new SamplePropertiesValidator();
|
||||||
|
}
|
||||||
@Autowired
|
|
||||||
private SampleProperties properties;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run(String... args) {
|
public void run(String... args) {
|
||||||
|
|
@ -47,11 +43,9 @@ public class SamplePropertyValidationApplication {
|
||||||
System.out.println("Sample port: " + this.properties.getPort());
|
System.out.println("Sample port: " + this.properties.getPort());
|
||||||
System.out.println("=========================================");
|
System.out.println("=========================================");
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public static void main(String[] args) throws Exception {
|
public static void main(String[] args) throws Exception {
|
||||||
new SpringApplicationBuilder(SamplePropertyValidationApplication.class)
|
new SpringApplicationBuilder(SamplePropertyValidationApplication.class).run(args);
|
||||||
.profiles("app").run(args);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue