English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Detaillierte Erklärung der Komponentenscanning mit Annotationen

Bei der Verwendung der Komponentenscanning muss der Scanpfad in der XML-Konfiguration angegeben werden

<context:component-scan back-package="yangjq.test">

Der Container instanziert scannt das YangJq.Test-Paket und alle Unterpakete desselben

Nur wenn die Komponentenklasse vor der folgenden Annotierungsmarke definiert ist, werden diese Komponentenklasse in den Spring-Container gescannt
- @Component Allgemeine Annotierung
- @Name Allgemeine Annotierung
- @Repository Annotierung für die Persistenzschicht
- @Service Annotierung für die Geschäftslogik
- @Controller Annotierung für die Steuerungsebene

Namen

Während des Scans generiert die Komponente eine Standard-ID-Wert (klein geschriebener Klassename), dieser kann auch im Annotierungsmarkenbereich eine benutzerdefinierte ID-Wert festlegen, z.B.:

//Dies ist die Standard-ID, deren Wert "OracleUserDao" ist
@Repository
public class OracleUserDao implements UserDao{
}
//Dies ist eine benutzerdefinierte ID, deren Wert "loginService" ist
@Service("loginService")
public class UserService{
}

Die Auflösung der Komponenten

Die Komponenten, die von Spring verwaltet werden, haben in der Regel die Standard-Auflösung "singleton", wenn eine andere Auflösung erforderlich ist, kann die @Scope-Annotation verwendet werden, um den Namen der Auflösung bereitzustellen.

@Scope("prototype")
@Repository
public class OracleUserDao implements UserDao{
}

初始化和销毁

Die @PostConstruct- und @PreDestroy-Annotationen werden verwendet, um Callback-Methoden für Initialisierung und Zerstörung zu spezifizieren, z.B.:

public class ExampleBean{
	@PostConstruct
	  public void init(){
		//.......Initialisierung
	}
	@PreDestroy
	  public void destroy(){
		//........Zerstörung
	}
}

Für Annotierungen mit Abhängigkeitsinjektionsbeziehungen von Bean

Es kann eine der folgenden Implementierungen zur Abhängigkeitsinjektion verwendet werden

- @Resource
- @AutoWired/@Qualifier
- @Inject/@Named

Man verwendet normalerweise @Resource häufiger, also werde ich hier @Resource nennen, andere können beim Suchen nach der Verwendung angezeigt werden
Die @Resource-Annotation kann vor der Felddefinition oder der Setter-Methode definiert werden. Es wird standardmäßig zunächst nach dem Namen und dann nach dem Typ injiziert

public class UserSerivce{
	//@Resource - Das wird vor der Felddefinition verwendet
	private UserDao userDao;
	@Resource  //Das wird vor dem Setter-Methoden verwendet
	public void setUserDao(UserDao dao){
		this.UserDao = dao;
	}
}

Wenn mehrere passende Bean-Matchings vorliegen, kann eine Fehlermeldung bei der Injektion auftreten. Sie können den Namen explizit angeben, z.B. @Resource(name = "exampleDao").

Zusammenfassung

Das sind alle Inhalte dieses Artikels über die detaillierte Erklärung der Komponentenscanning basierend auf Anmerkungen. Hoffentlich hilft es Ihnen weiter. Interessierte Freunde können weiterhin andere verwandte Themen dieser Website lesen. Bitte hinterlassen Sie Kommentare, wenn Sie Fehler bemerken. Vielen Dank für die Unterstützung der Freunde dieser Website!

Erklärung: Der Inhalt dieses Artikels wurde aus dem Internet übernommen und gehört dem Urheber. Der Inhalt wurde von Internetnutzern freiwillig beigesteuert und hochgeladen. Diese Website besitzt keine Eigentumsrechte und hat den Inhalt nicht von Hand bearbeitet. Sollten Sie urheberrechtlich bedenkliche Inhalte feststellen, freuen wir uns über eine E-Mail an: notice#oldtoolbag.com (Bitte ersetzen Sie # durch @, wenn Sie eine Beschwerde einreichen, und fügen Sie relevante Beweise bei. Bei nachgewiesener Täuschung wird die Website die beanstandeten urheberrechtlichen Inhalte sofort löschen.)

Vielleicht gefällt dir auch