1
1
/*
2
- * Copyright 2002-2018 the original author or authors.
2
+ * Copyright 2002-2019 the original author or authors.
3
3
*
4
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
5
* you may not use this file except in compliance with the License.
16
16
17
17
package org .springframework .context .annotation ;
18
18
19
+ import java .lang .annotation .Annotation ;
19
20
import java .util .function .Supplier ;
20
21
21
22
import org .springframework .beans .factory .config .BeanDefinitionCustomizer ;
@@ -152,7 +153,8 @@ public void setScopeMetadataResolver(ScopeMetadataResolver scopeMetadataResolver
152
153
* @see #scan(String...)
153
154
* @see #refresh()
154
155
*/
155
- public void register (Class <?>... annotatedClasses ) {
156
+ @ Override
157
+ public final void register (Class <?>... annotatedClasses ) {
156
158
Assert .notEmpty (annotatedClasses , "At least one annotated class must be specified" );
157
159
this .reader .register (annotatedClasses );
158
160
}
@@ -165,7 +167,8 @@ public void register(Class<?>... annotatedClasses) {
165
167
* @see #register(Class...)
166
168
* @see #refresh()
167
169
*/
168
- public void scan (String ... basePackages ) {
170
+ @ Override
171
+ public final void scan (String ... basePackages ) {
169
172
Assert .notEmpty (basePackages , "At least one base package must be specified" );
170
173
this .scanner .scan (basePackages );
171
174
}
@@ -175,6 +178,65 @@ public void scan(String... basePackages) {
175
178
// Convenient methods for registering individual beans
176
179
//---------------------------------------------------------------------
177
180
181
+ /**
182
+ * Register a bean from the given bean class.
183
+ * @param annotatedClass the class of the bean
184
+ * @since 5.2
185
+ */
186
+ public final <T > void registerBean (Class <T > annotatedClass ) {
187
+ this .reader .doRegisterBean (annotatedClass , null , null , null );
188
+ }
189
+
190
+ /**
191
+ * Register a bean from the given bean class, using the given supplier for
192
+ * obtaining a new instance (typically declared as a lambda expression or
193
+ * method reference).
194
+ * @param annotatedClass the class of the bean
195
+ * @param supplier a callback for creating an instance of the bean
196
+ * @since 5.2
197
+ */
198
+ public final <T > void registerBean (Class <T > annotatedClass , Supplier <T > supplier ) {
199
+ this .reader .doRegisterBean (annotatedClass , supplier , null , null );
200
+ }
201
+
202
+ /**
203
+ * Register a bean from the given bean class, deriving its metadata from
204
+ * class-declared annotations.
205
+ * @param annotatedClass the class of the bean
206
+ * @param qualifiers specific qualifier annotations to consider,
207
+ * in addition to qualifiers at the bean class level (may be empty).
208
+ * These can be actual autowire qualifiers as well as {@link Primary}
209
+ * and {@link Lazy}.
210
+ * @since 5.2
211
+ */
212
+ @ Override
213
+ @ SafeVarargs
214
+ @ SuppressWarnings ("varargs" )
215
+ public final <T > void registerBean (Class <T > annotatedClass , Class <? extends Annotation >... qualifiers ) {
216
+ this .reader .doRegisterBean (annotatedClass , null , null , qualifiers );
217
+ }
218
+
219
+ /**
220
+ * Register a bean from the given bean class, using the given supplier for
221
+ * obtaining a new instance (typically declared as a lambda expression or
222
+ * method reference).
223
+ * @param annotatedClass the class of the bean
224
+ * @param supplier a callback for creating an instance of the bean
225
+ * @param qualifiers specific qualifier annotations to consider,
226
+ * in addition to qualifiers at the bean class level (may be empty).
227
+ * These can be actual autowire qualifiers as well as {@link Primary}
228
+ * and {@link Lazy}.
229
+ * @since 5.2
230
+ */
231
+ @ Override
232
+ @ SafeVarargs
233
+ @ SuppressWarnings ("varargs" )
234
+ public final <T > void registerBean (
235
+ Class <T > annotatedClass , Supplier <T > supplier , Class <? extends Annotation >... qualifiers ) {
236
+
237
+ this .reader .doRegisterBean (annotatedClass , supplier , null , qualifiers );
238
+ }
239
+
178
240
/**
179
241
* Register a bean from the given bean class, deriving its metadata from
180
242
* class-declared annotations, and optionally providing explicit constructor
@@ -187,7 +249,7 @@ public void scan(String... basePackages) {
187
249
* (may be {@code null} or empty)
188
250
* @since 5.0
189
251
*/
190
- public <T > void registerBean (Class <T > annotatedClass , Object ... constructorArguments ) {
252
+ public final <T > void registerBean (Class <T > annotatedClass , Object ... constructorArguments ) {
191
253
registerBean (null , annotatedClass , constructorArguments );
192
254
}
193
255
@@ -203,7 +265,9 @@ public <T> void registerBean(Class<T> annotatedClass, Object... constructorArgum
203
265
* (may be {@code null} or empty)
204
266
* @since 5.0
205
267
*/
206
- public <T > void registerBean (@ Nullable String beanName , Class <T > annotatedClass , Object ... constructorArguments ) {
268
+ public final <T > void registerBean (
269
+ @ Nullable String beanName , Class <T > annotatedClass , Object ... constructorArguments ) {
270
+
207
271
this .reader .doRegisterBean (annotatedClass , null , beanName , null ,
208
272
bd -> {
209
273
for (Object arg : constructorArguments ) {
@@ -213,8 +277,8 @@ public <T> void registerBean(@Nullable String beanName, Class<T> annotatedClass,
213
277
}
214
278
215
279
@ Override
216
- public <T > void registerBean (@ Nullable String beanName , Class <T > beanClass , @ Nullable Supplier < T > supplier ,
217
- BeanDefinitionCustomizer ... customizers ) {
280
+ public final <T > void registerBean (@ Nullable String beanName , Class <T > beanClass ,
281
+ @ Nullable Supplier < T > supplier , BeanDefinitionCustomizer ... customizers ) {
218
282
219
283
this .reader .doRegisterBean (beanClass , supplier , beanName , null , customizers );
220
284
}
0 commit comments