22
22
import org .springframework .context .ApplicationContext ;
23
23
import org .springframework .context .annotation .Bean ;
24
24
import org .springframework .context .annotation .Configuration ;
25
- import org .springframework .context .annotation .Primary ;
26
25
import org .springframework .core .convert .ConversionService ;
27
26
import org .springframework .data .util .Lazy ;
28
27
import org .springframework .data .web .HateoasPageableHandlerMethodArgumentResolver ;
29
28
import org .springframework .data .web .HateoasSortHandlerMethodArgumentResolver ;
30
- import org .springframework .data .web .PageableHandlerMethodArgumentResolver ;
31
29
import org .springframework .data .web .PagedResourcesAssembler ;
32
30
import org .springframework .data .web .PagedResourcesAssemblerArgumentResolver ;
33
- import org .springframework .data .web .SortHandlerMethodArgumentResolver ;
34
31
import org .springframework .web .method .support .HandlerMethodArgumentResolver ;
35
32
36
33
/**
42
39
* @author Ben Hale
43
40
* @author Vedran Pavic
44
41
* @author Mark Paluch
42
+ * @author Greg Turnquist
45
43
*/
46
44
@ Configuration (proxyBeanMethods = false )
47
45
public class HateoasAwareSpringDataWebConfiguration extends SpringDataWebConfiguration {
48
46
49
- private final ApplicationContext context ;
47
+ private final Lazy <HateoasSortHandlerMethodArgumentResolver > sortResolver ;
48
+ private final Lazy <HateoasPageableHandlerMethodArgumentResolver > pageableResolver ;
49
+ private final Lazy <PagedResourcesAssemblerArgumentResolver > argumentResolver ;
50
50
51
51
/**
52
52
* @param context must not be {@literal null}.
53
53
* @param conversionService must not be {@literal null}.
54
54
*/
55
55
public HateoasAwareSpringDataWebConfiguration (ApplicationContext context ,
56
56
@ Qualifier ("mvcConversionService" ) ObjectFactory <ConversionService > conversionService ) {
57
+
57
58
super (context , conversionService );
58
- this . context = context ;
59
+
59
60
this .sortResolver = Lazy
60
- .of (() -> context .getBean ("hateoasSortResolver " , HateoasSortHandlerMethodArgumentResolver .class ));
61
+ .of (() -> context .getBean ("sortResolver " , HateoasSortHandlerMethodArgumentResolver .class ));
61
62
this .pageableResolver = Lazy
62
- .of (() -> context .getBean ("hateoasPageableResolver" , HateoasPageableHandlerMethodArgumentResolver .class ));
63
-
63
+ .of (() -> context .getBean ("pageableResolver" , HateoasPageableHandlerMethodArgumentResolver .class ));
64
+ this .argumentResolver = Lazy .of (() -> context .getBean ("pagedResourcesAssemblerArgumentResolver" ,
65
+ PagedResourcesAssemblerArgumentResolver .class ));
64
66
}
65
67
66
68
/*
67
69
* (non-Javadoc)
68
70
* @see org.springframework.data.web.config.SpringDataWebConfiguration#pageableResolver()
69
71
*/
72
+ @ Override
70
73
@ Bean
71
- public HateoasPageableHandlerMethodArgumentResolver hateoasPageableResolver () {
74
+ public HateoasPageableHandlerMethodArgumentResolver pageableResolver () {
72
75
73
76
HateoasPageableHandlerMethodArgumentResolver pageableResolver = new HateoasPageableHandlerMethodArgumentResolver (
74
- ( HateoasSortHandlerMethodArgumentResolver ) this .sortResolver .get ());
77
+ this .sortResolver .get ());
75
78
customizePageableResolver (pageableResolver );
76
79
return pageableResolver ;
77
80
}
@@ -81,23 +84,22 @@ public HateoasPageableHandlerMethodArgumentResolver hateoasPageableResolver() {
81
84
* @see org.springframework.data.web.config.SpringDataWebConfiguration#sortResolver()
82
85
*/
83
86
@ Bean
84
- public HateoasSortHandlerMethodArgumentResolver hateoasSortResolver () {
87
+ @ Override
88
+ public HateoasSortHandlerMethodArgumentResolver sortResolver () {
85
89
86
90
HateoasSortHandlerMethodArgumentResolver sortResolver = new HateoasSortHandlerMethodArgumentResolver ();
87
91
customizeSortResolver (sortResolver );
88
92
return sortResolver ;
89
93
}
90
94
91
95
@ Bean
92
- public PagedResourcesAssembler <?> pagedResourcesAssembler (
93
- HateoasPageableHandlerMethodArgumentResolver pageableResolver ) {
94
- return new PagedResourcesAssembler <>(pageableResolver , null );
96
+ public PagedResourcesAssembler <?> pagedResourcesAssembler () {
97
+ return new PagedResourcesAssembler <>(pageableResolver .get (), null );
95
98
}
96
99
97
100
@ Bean
98
- public PagedResourcesAssemblerArgumentResolver pagedResourcesAssemblerArgumentResolver (
99
- HateoasPageableHandlerMethodArgumentResolver pageableResolver ) {
100
- return new PagedResourcesAssemblerArgumentResolver (pageableResolver , null );
101
+ public PagedResourcesAssemblerArgumentResolver pagedResourcesAssemblerArgumentResolver () {
102
+ return new PagedResourcesAssemblerArgumentResolver (pageableResolver .get (), null );
101
103
}
102
104
103
105
/*
@@ -106,8 +108,9 @@ public PagedResourcesAssemblerArgumentResolver pagedResourcesAssemblerArgumentRe
106
108
*/
107
109
@ Override
108
110
public void addArgumentResolvers (List <HandlerMethodArgumentResolver > argumentResolvers ) {
111
+
109
112
super .addArgumentResolvers (argumentResolvers );
110
- argumentResolvers
111
- .add (context . getBean ( "pagedResourcesAssemblerArgumentResolver" , PagedResourcesAssemblerArgumentResolver . class ));
113
+
114
+ argumentResolvers .add (argumentResolver . get ( ));
112
115
}
113
116
}
0 commit comments