[JAVA] Das @ Import-Ziel wird im Frühjahr als @ Konfiguration behandelt

Ich habe eine Java-Konfigurationsklasse erstellt, die im Frühjahr `@ Import``` sein würde. Zu diesem Zeitpunkt ist es seltsam, dass @ Bean in der Klasse von `` `@ Import registriert wird, ohne der Einstellungsklasse @ Configuration``` hinzuzufügen. Also habe ich mir den Quellcode angesehen, um diesen Bereich zu untersuchen.

pom.xml


	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.1.3.RELEASE</version>
	</parent>

Wenn Sie der Quelle folgen, scheint es, dass hier "@ Import" verarbeitet wird, obwohl die Details von ApplicationContext weggelassen werden. Die folgende Methode übergibt eine Sammlung von Importkandidatenklassen und verarbeitet sie nacheinander.

ConfigurationClassParser


package org.springframework.context.annotation;

class ConfigurationClassParser {
	private void processImports(/*...(Abkürzung)...*/, Collection<SourceClass> importCandidates, /*...(Abkürzung)...*/) {
				// ...(Abkürzung)
				for (SourceClass candidate : importCandidates) {
					if (candidate.isAssignable(ImportSelector.class)) {
						// ...(Abkürzung)
					else if (candidate.isAssignable(ImportBeanDefinitionRegistrar.class)) {
						// ...(Abkürzung)
					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));

Wenn zu diesem Zeitpunkt @ ImportSelector``` und @ ImportBeanDefinitionRegistrar``` zum Ausführen eines bedingten Imports zugewiesen sind, wird die dafür vorgesehene Verarbeitung ausgeführt. Wenn es sich jedoch nicht um diese Anmerkungen handelt, wie im Kommentar im Code angegeben: "Wenn die Importkandidatenklasse nicht ImportSelector oder ImportBeanDefinitionRegistrar ist, wird sie als" @ Configuration "verarbeitet."

Es scheint also grundsätzlich gut zu denken, dass die Zielklasse "@ Import" als "@ Configuration" angesehen wird. Natürlich wird es verschiedene Unterschiede im Detail geben.

Recommended Posts

Das @ Import-Ziel wird im Frühjahr als @ Konfiguration behandelt
Die Ereignisverarbeitung wird im Frühjahr durchgeführt.
Spring Autowired wird im Konstruktor geschrieben
Maven-Konfigurationsproblem mit Spring pom.xml in Eclipse
Ausgabe Bean als JSON im Frühjahr
[Java] In der Ausgabe wird etwas als "-0.0" angezeigt
ORA-08177, wenn Spring Batch kontinuierlich in Oracle ausgeführt wird
Java11: Führen Sie Java-Code unverändert in einer einzelnen Datei aus