18
18
19
19
import java .lang .annotation .Retention ;
20
20
import java .lang .annotation .RetentionPolicy ;
21
+ import javax .validation .Validator ;
21
22
import javax .validation .constraints .Max ;
22
23
import javax .validation .constraints .NotNull ;
23
24
import javax .validation .groups .Default ;
26
27
27
28
import org .springframework .aop .framework .ProxyFactory ;
28
29
import org .springframework .beans .MutablePropertyValues ;
30
+ import org .springframework .context .annotation .AnnotationConfigApplicationContext ;
31
+ import org .springframework .context .annotation .Bean ;
32
+ import org .springframework .context .annotation .Configuration ;
33
+ import org .springframework .context .annotation .Lazy ;
29
34
import org .springframework .context .support .StaticApplicationContext ;
30
35
import org .springframework .scheduling .annotation .Async ;
31
36
import org .springframework .scheduling .annotation .AsyncAnnotationAdvisor ;
32
37
import org .springframework .scheduling .annotation .AsyncAnnotationBeanPostProcessor ;
33
38
import org .springframework .validation .annotation .Validated ;
39
+ import org .springframework .validation .beanvalidation .CustomValidatorBean ;
34
40
import org .springframework .validation .beanvalidation .MethodValidationInterceptor ;
35
41
import org .springframework .validation .beanvalidation .MethodValidationPostProcessor ;
36
42
39
45
/**
40
46
* @author Juergen Hoeller
41
47
*/
42
- @ SuppressWarnings ("rawtypes" )
43
48
public class MethodValidationTests {
44
49
45
50
@ Test
@@ -64,8 +69,6 @@ public void testMethodValidationPostProcessor() {
64
69
ac .close ();
65
70
}
66
71
67
-
68
- @ SuppressWarnings ("unchecked" )
69
72
private void doTestProxyValidation (MyValidInterface proxy ) {
70
73
assertNotNull (proxy .myValidMethod ("value" , 5 ));
71
74
try {
@@ -116,6 +119,13 @@ private void doTestProxyValidation(MyValidInterface proxy) {
116
119
}
117
120
}
118
121
122
+ @ Test
123
+ public void testLazyValidatorForMethodValidation () {
124
+ AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext (
125
+ LazyMethodValidationConfig .class , CustomValidatorBean .class , MyValidBean .class );
126
+ ctx .getBean (MyValidInterface .class ).myValidMethod ("value" , 5 );
127
+ }
128
+
119
129
120
130
@ MyStereotype
121
131
public static class MyValidBean implements MyValidInterface <String > {
@@ -166,4 +176,16 @@ public interface OtherGroup {
166
176
public @interface MyValid {
167
177
}
168
178
179
+
180
+ @ Configuration
181
+ public static class LazyMethodValidationConfig {
182
+
183
+ @ Bean
184
+ public static MethodValidationPostProcessor methodValidationPostProcessor (@ Lazy Validator validator ) {
185
+ MethodValidationPostProcessor postProcessor = new MethodValidationPostProcessor ();
186
+ postProcessor .setValidator (validator );
187
+ return postProcessor ;
188
+ }
189
+ }
190
+
169
191
}
0 commit comments