62
62
*
63
63
* @author Phillip Webb
64
64
* @author Stephane Nicoll
65
+ * @author Daeho Kwon
65
66
*/
66
67
@ SuppressWarnings ("resource" )
67
68
public class ImportSelectorTests {
@@ -152,7 +153,7 @@ void importSelectorsSeparateWithGroup() {
152
153
ordered .verify (beanFactory ).registerBeanDefinition (eq ("d" ), any ());
153
154
assertThat (TestImportGroup .instancesCount .get ()).isEqualTo (1 );
154
155
assertThat (TestImportGroup .imports .keySet ().stream ().map (AnnotationMetadata ::getClassName ))
155
- .containsExactly (GroupedConfig2 .class .getName (),GroupedConfig1 .class .getName ());
156
+ .containsExactly (GroupedConfig2 .class .getName (), GroupedConfig1 .class .getName ());
156
157
}
157
158
158
159
@ Test
@@ -168,11 +169,11 @@ void importSelectorsWithNestedGroup() {
168
169
assertThat (TestImportGroup .instancesCount .get ()).isEqualTo (2 );
169
170
assertThat (TestImportGroup .imports ).hasSize (2 );
170
171
assertThat (TestImportGroup .allImports ())
171
- .containsOnlyKeys (ParentConfiguration1 .class .getName (), ChildConfiguration1 .class .getName ());
172
+ .containsOnlyKeys (ParentConfiguration1 .class .getName (), ChildConfiguration1 .class .getName ());
172
173
assertThat (TestImportGroup .allImports ().get (ParentConfiguration1 .class .getName ()))
173
- .containsExactly (DeferredImportSelector1 .class .getName (), ChildConfiguration1 .class .getName ());
174
+ .containsExactly (DeferredImportSelector1 .class .getName (), ChildConfiguration1 .class .getName ());
174
175
assertThat (TestImportGroup .allImports ().get (ChildConfiguration1 .class .getName ()))
175
- .containsExactly (DeferredImportedSelector3 .class .getName ());
176
+ .containsExactly (DeferredImportedSelector3 .class .getName ());
176
177
}
177
178
178
179
@ Test
@@ -187,11 +188,11 @@ void importSelectorsWithNestedGroupSameDeferredImport() {
187
188
assertThat (TestImportGroup .instancesCount .get ()).isEqualTo (2 );
188
189
assertThat (TestImportGroup .allImports ()).hasSize (2 );
189
190
assertThat (TestImportGroup .allImports ())
190
- .containsOnlyKeys (ParentConfiguration2 .class .getName (), ChildConfiguration2 .class .getName ());
191
+ .containsOnlyKeys (ParentConfiguration2 .class .getName (), ChildConfiguration2 .class .getName ());
191
192
assertThat (TestImportGroup .allImports ().get (ParentConfiguration2 .class .getName ()))
192
- .containsExactly (DeferredImportSelector2 .class .getName (), ChildConfiguration2 .class .getName ());
193
+ .containsExactly (DeferredImportSelector2 .class .getName (), ChildConfiguration2 .class .getName ());
193
194
assertThat (TestImportGroup .allImports ().get (ChildConfiguration2 .class .getName ()))
194
- .containsExactly (DeferredImportSelector2 .class .getName ());
195
+ .containsExactly (DeferredImportSelector2 .class .getName ());
195
196
}
196
197
197
198
@ Test
@@ -203,6 +204,38 @@ void invokeAwareMethodsInImportGroup() {
203
204
assertThat (TestImportGroup .environment ).isEqualTo (context .getEnvironment ());
204
205
}
205
206
207
+ @ Test
208
+ void importAnnotationOnImplementedInterfaceIsRespected () {
209
+ AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext ();
210
+ context .register (InterfaceBasedConfig .class );
211
+ context .refresh ();
212
+
213
+ assertThat (context .getBean (ImportedConfig .class )).isNotNull ();
214
+ assertThat (context .getBean (ImportedBean .class )).isNotNull ();
215
+ assertThat (context .getBean (ImportedBean .class ).name ()).isEqualTo ("imported" );
216
+ }
217
+
218
+ @ Import (ImportedConfig .class )
219
+ interface ConfigImportMarker {
220
+ }
221
+
222
+ @ Configuration
223
+ static class InterfaceBasedConfig implements ConfigImportMarker {
224
+ }
225
+
226
+ static class ImportedBean {
227
+ String name () {
228
+ return "imported" ;
229
+ }
230
+ }
231
+
232
+ @ Configuration
233
+ static class ImportedConfig {
234
+ @ Bean
235
+ ImportedBean importedBean () {
236
+ return new ImportedBean ();
237
+ }
238
+ }
206
239
207
240
@ Configuration
208
241
@ Import (SampleImportSelector .class )
@@ -247,7 +280,7 @@ public void setEnvironment(Environment environment) {
247
280
248
281
@ Override
249
282
public String [] selectImports (AnnotationMetadata importingClassMetadata ) {
250
- return new String [] {};
283
+ return new String []{};
251
284
}
252
285
}
253
286
@@ -271,7 +304,7 @@ public static class ImportSelector1 implements ImportSelector {
271
304
@ Override
272
305
public String [] selectImports (AnnotationMetadata importingClassMetadata ) {
273
306
ImportSelectorTests .importFrom .put (getClass (), importingClassMetadata .getClassName ());
274
- return new String [] { ImportedSelector1 .class .getName () };
307
+ return new String []{ ImportedSelector1 .class .getName ()};
275
308
}
276
309
}
277
310
@@ -281,7 +314,7 @@ public static class ImportSelector2 implements ImportSelector {
281
314
@ Override
282
315
public String [] selectImports (AnnotationMetadata importingClassMetadata ) {
283
316
ImportSelectorTests .importFrom .put (getClass (), importingClassMetadata .getClassName ());
284
- return new String [] { ImportedSelector2 .class .getName () };
317
+ return new String []{ ImportedSelector2 .class .getName ()};
285
318
}
286
319
}
287
320
@@ -294,7 +327,7 @@ public static class FilteredImportSelector implements ImportSelector {
294
327
295
328
@ Override
296
329
public String [] selectImports (AnnotationMetadata importingClassMetadata ) {
297
- return new String [] { ImportedSelector1 .class .getName (), ImportedSelector2 .class .getName (), ImportedSelector3 .class .getName () };
330
+ return new String []{ ImportedSelector1 .class .getName (), ImportedSelector2 .class .getName (), ImportedSelector3 .class .getName ()};
298
331
}
299
332
300
333
@ Override
@@ -310,7 +343,7 @@ public static class DeferredImportSelector1 implements DeferredImportSelector, O
310
343
@ Override
311
344
public String [] selectImports (AnnotationMetadata importingClassMetadata ) {
312
345
ImportSelectorTests .importFrom .put (getClass (), importingClassMetadata .getClassName ());
313
- return new String [] { DeferredImportedSelector1 .class .getName () };
346
+ return new String []{ DeferredImportedSelector1 .class .getName ()};
314
347
}
315
348
316
349
@ Override
@@ -326,7 +359,7 @@ public static class DeferredImportSelector2 implements DeferredImportSelector {
326
359
@ Override
327
360
public String [] selectImports (AnnotationMetadata importingClassMetadata ) {
328
361
ImportSelectorTests .importFrom .put (getClass (), importingClassMetadata .getClassName ());
329
- return new String [] { DeferredImportedSelector2 .class .getName () };
362
+ return new String []{ DeferredImportedSelector2 .class .getName ()};
330
363
}
331
364
}
332
365
@@ -399,7 +432,7 @@ public static class IndirectImportSelector implements ImportSelector {
399
432
400
433
@ Override
401
434
public String [] selectImports (AnnotationMetadata importingClassMetadata ) {
402
- return new String [] {IndirectImport .class .getName ()};
435
+ return new String []{IndirectImport .class .getName ()};
403
436
}
404
437
405
438
@ Override
@@ -465,7 +498,7 @@ public static class ParentDeferredImportSelector1 implements DeferredImportSelec
465
498
@ Override
466
499
public String [] selectImports (AnnotationMetadata importingClassMetadata ) {
467
500
ImportSelectorTests .importFrom .put (getClass (), importingClassMetadata .getClassName ());
468
- return new String [] { DeferredImportSelector1 .class .getName (), ChildConfiguration1 .class .getName () };
501
+ return new String []{ DeferredImportSelector1 .class .getName (), ChildConfiguration1 .class .getName ()};
469
502
}
470
503
471
504
@ Override
@@ -485,7 +518,7 @@ public static class ParentDeferredImportSelector2 implements DeferredImportSelec
485
518
@ Override
486
519
public String [] selectImports (AnnotationMetadata importingClassMetadata ) {
487
520
ImportSelectorTests .importFrom .put (getClass (), importingClassMetadata .getClassName ());
488
- return new String [] { DeferredImportSelector2 .class .getName (), ChildConfiguration2 .class .getName () };
521
+ return new String []{ DeferredImportSelector2 .class .getName (), ChildConfiguration2 .class .getName ()};
489
522
}
490
523
491
524
@ Override
@@ -507,7 +540,7 @@ public static class ChildDeferredImportSelector1 implements DeferredImportSelect
507
540
@ Override
508
541
public String [] selectImports (AnnotationMetadata importingClassMetadata ) {
509
542
ImportSelectorTests .importFrom .put (getClass (), importingClassMetadata .getClassName ());
510
- return new String [] { DeferredImportedSelector3 .class .getName () };
543
+ return new String []{ DeferredImportedSelector3 .class .getName ()};
511
544
}
512
545
513
546
@ Override
@@ -528,7 +561,7 @@ public static class ChildDeferredImportSelector2 implements DeferredImportSelect
528
561
@ Override
529
562
public String [] selectImports (AnnotationMetadata importingClassMetadata ) {
530
563
ImportSelectorTests .importFrom .put (getClass (), importingClassMetadata .getClassName ());
531
- return new String [] { DeferredImportSelector2 .class .getName () };
564
+ return new String []{ DeferredImportSelector2 .class .getName ()};
532
565
}
533
566
534
567
@ Override
0 commit comments