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