33
33
import javax .servlet .MultipartConfigElement ;
34
34
import javax .servlet .Servlet ;
35
35
36
+ import org .apache .commons .logging .Log ;
37
+ import org .apache .commons .logging .LogFactory ;
36
38
import org .springframework .beans .factory .ListableBeanFactory ;
39
+ import org .springframework .beans .factory .support .BeanDefinitionRegistry ;
37
40
import org .springframework .core .annotation .AnnotationAwareOrderComparator ;
38
41
import org .springframework .util .LinkedMultiValueMap ;
39
42
import org .springframework .util .MultiValueMap ;
@@ -57,6 +60,8 @@ class ServletContextInitializerBeans extends
57
60
58
61
static final String DISPATCHER_SERVLET_NAME = "dispatcherServlet" ;
59
62
63
+ private final Log log = LogFactory .getLog (getClass ());
64
+
60
65
private final Set <Object > seen = new HashSet <Object >();
61
66
62
67
private final MultiValueMap <Class <?>, ServletContextInitializer > initializers ;
@@ -79,36 +84,55 @@ public ServletContextInitializerBeans(ListableBeanFactory beanFactory) {
79
84
private void addServletContextInitializerBeans (ListableBeanFactory beanFactory ) {
80
85
for (Entry <String , ServletContextInitializer > initializerBean : getOrderedBeansOfType (
81
86
beanFactory , ServletContextInitializer .class )) {
82
- addServletContextInitializerBean (initializerBean .getValue ());
87
+ addServletContextInitializerBean (initializerBean .getKey (),
88
+ initializerBean .getValue (), beanFactory );
83
89
}
84
90
}
85
91
86
- private void addServletContextInitializerBean (ServletContextInitializer initializer ) {
92
+ private void addServletContextInitializerBean (String beanName ,
93
+ ServletContextInitializer initializer , ListableBeanFactory beanFactory ) {
87
94
if (initializer instanceof ServletRegistrationBean ) {
88
- addServletContextInitializerBean (Servlet .class , initializer ,
89
- ((ServletRegistrationBean ) initializer ).getServlet ());
95
+ addServletContextInitializerBean (Servlet .class , beanName , initializer ,
96
+ beanFactory , ((ServletRegistrationBean ) initializer ).getServlet ());
90
97
}
91
98
else if (initializer instanceof FilterRegistrationBean ) {
92
- addServletContextInitializerBean (Filter .class , initializer ,
93
- ((FilterRegistrationBean ) initializer ).getFilter ());
99
+ addServletContextInitializerBean (Filter .class , beanName , initializer ,
100
+ beanFactory , ((FilterRegistrationBean ) initializer ).getFilter ());
94
101
}
95
102
else if (initializer instanceof ServletListenerRegistrationBean ) {
96
- addServletContextInitializerBean (EventListener .class , initializer ,
103
+ addServletContextInitializerBean (EventListener .class , beanName , initializer ,
104
+ beanFactory ,
97
105
((ServletListenerRegistrationBean <?>) initializer ).getListener ());
98
106
}
99
107
else {
100
- addServletContextInitializerBean (ServletContextInitializer .class ,
101
- initializer , null );
108
+ addServletContextInitializerBean (ServletContextInitializer .class , beanName ,
109
+ initializer , beanFactory , null );
102
110
}
103
111
}
104
112
105
- private void addServletContextInitializerBean (Class <?> type ,
106
- ServletContextInitializer initializer , Object source ) {
113
+ private void addServletContextInitializerBean (Class <?> type , String beanName ,
114
+ ServletContextInitializer initializer , ListableBeanFactory beanFactory ,
115
+ Object source ) {
107
116
this .initializers .add (type , initializer );
108
117
if (source != null ) {
109
118
// Mark the underlying source as seen in case it wraps an existing bean
110
119
this .seen .add (source );
111
120
}
121
+ if (this .log .isDebugEnabled ()) {
122
+ String resourceDescription = getResourceDescription (beanName , beanFactory );
123
+ int order = getOrder (initializer );
124
+ this .log .debug ("Added existing " + type .getSimpleName ()
125
+ + " initializer bean '" + beanName + "'; order=" + order
126
+ + ", resource=" + resourceDescription );
127
+ }
128
+ }
129
+
130
+ private String getResourceDescription (String beanName , ListableBeanFactory beanFactory ) {
131
+ if (beanFactory instanceof BeanDefinitionRegistry ) {
132
+ BeanDefinitionRegistry registry = (BeanDefinitionRegistry ) beanFactory ;
133
+ return registry .getBeanDefinition (beanName ).getResourceDescription ();
134
+ }
135
+ return "unknown" ;
112
136
}
113
137
114
138
@ SuppressWarnings ("unchecked" )
@@ -141,12 +165,21 @@ private <T, B extends T> void addAsRegistrationBean(ListableBeanFactory beanFact
141
165
List <Map .Entry <String , B >> beans = getOrderedBeansOfType (beanFactory , beanType );
142
166
for (Entry <String , B > bean : beans ) {
143
167
if (this .seen .add (bean .getValue ())) {
168
+ int order = getOrder (bean .getValue ());
169
+ String beanName = bean .getKey ();
144
170
// One that we haven't already seen
145
- RegistrationBean registration = adapter .createRegistrationBean (
146
- bean .getKey (), bean . getValue (), beans .size ());
147
- registration .setName (bean . getKey () );
148
- registration .setOrder (getOrder ( bean . getValue ()) );
171
+ RegistrationBean registration = adapter .createRegistrationBean (beanName ,
172
+ bean .getValue (), beans .size ());
173
+ registration .setName (beanName );
174
+ registration .setOrder (order );
149
175
this .initializers .add (type , registration );
176
+
177
+ if (this .log .isDebugEnabled ()) {
178
+ this .log .debug ("Created " + type .getSimpleName ()
179
+ + " initializer for bean '" + beanName + "'; order=" + order
180
+ + ", resource="
181
+ + getResourceDescription (beanName , beanFactory ));
182
+ }
150
183
}
151
184
}
152
185
}
0 commit comments