Je créais une classe de configuration java qui serait @ Import '' au printemps. À ce stade, il est étrange que
@ Bean``` dans la classe soit enregistré si
@ Import``` est fait sans ajouter
`` @ Configuration``` à la classe de réglage. J'ai donc jeté un coup d'œil au code source pour étudier ce domaine.
pom.xml
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
</parent>
Si vous suivez la source, il semble que c'est ici que `` @ Import '' est traité, bien que les détails d'ApplicationContext soient omis. La méthode suivante reçoit une collection de classes candidates d'importation et les traite une par une.
ConfigurationClassParser
package org.springframework.context.annotation;
class ConfigurationClassParser {
private void processImports(/*...(Abréviation)...*/, Collection<SourceClass> importCandidates, /*...(Abréviation)...*/) {
// ...(Abréviation)
for (SourceClass candidate : importCandidates) {
if (candidate.isAssignable(ImportSelector.class)) {
// ...(Abréviation)
else if (candidate.isAssignable(ImportBeanDefinitionRegistrar.class)) {
// ...(Abréviation)
else {
// Candidate class not an ImportSelector or ImportBeanDefinitionRegistrar ->
// process it as an @Configuration class
this.importStack.registerImport(
currentSourceClass.getMetadata(), candidate.getMetadata().getClassName());
processConfigurationClass(candidate.asConfigClass(configClass));
À ce stade, si
@ ImportSelector et `` @ ImportBeanDefinitionRegistrar
pour effectuer une importation conditionnelle sont affectés, le traitement dédié à cela est effectué. Cependant, s'il ne s'agit pas de ces annotations, comme indiqué dans le commentaire du code, «Si la classe candidate à l'importation n'est pas ImportSelector ou ImportBeanDefinitionRegistrar, elle sera traitée comme
@ Configuration ''.
Donc, il semble fondamentalement bon de penser que la classe cible
@ Import est considérée comme `` `` @ Configuration
. Bien sûr, il y aura diverses différences de détail.
Recommended Posts