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
|
||||
`configurationPropertiesValidator`. There is a
|
||||
{github-code}/spring-boot-samples/spring-boot-sample-property-validation[Validation sample]
|
||||
so you can see how to set things up.
|
||||
`configurationPropertiesValidator`. The `@Bean` method should be declared `static`. The
|
||||
configuration properties validator is created very early in the application's lifecycle
|
||||
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
|
||||
`@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");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
|
@ -16,42 +16,36 @@
|
|||
|
||||
package sample.propertyvalidation;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.CommandLineRunner;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.boot.builder.SpringApplicationBuilder;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Profile;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.validation.Validator;
|
||||
|
||||
@SpringBootApplication
|
||||
public class SamplePropertyValidationApplication {
|
||||
public class SamplePropertyValidationApplication implements CommandLineRunner {
|
||||
|
||||
private final SampleProperties properties;
|
||||
|
||||
public SamplePropertyValidationApplication(SampleProperties properties) {
|
||||
this.properties = properties;
|
||||
}
|
||||
|
||||
@Bean
|
||||
public Validator configurationPropertiesValidator() {
|
||||
public static Validator configurationPropertiesValidator() {
|
||||
return new SamplePropertiesValidator();
|
||||
}
|
||||
|
||||
@Service
|
||||
@Profile("app")
|
||||
static class Startup implements CommandLineRunner {
|
||||
|
||||
@Autowired
|
||||
private SampleProperties properties;
|
||||
|
||||
@Override
|
||||
public void run(String... args) {
|
||||
System.out.println("=========================================");
|
||||
System.out.println("Sample host: " + this.properties.getHost());
|
||||
System.out.println("Sample port: " + this.properties.getPort());
|
||||
System.out.println("=========================================");
|
||||
}
|
||||
@Override
|
||||
public void run(String... args) {
|
||||
System.out.println("=========================================");
|
||||
System.out.println("Sample host: " + this.properties.getHost());
|
||||
System.out.println("Sample port: " + this.properties.getPort());
|
||||
System.out.println("=========================================");
|
||||
}
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
new SpringApplicationBuilder(SamplePropertyValidationApplication.class)
|
||||
.profiles("app").run(args);
|
||||
new SpringApplicationBuilder(SamplePropertyValidationApplication.class).run(args);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue