Obecnie jestem w trakcie dodawania Spring i Hibernate do istniejącej aplikacji, ale po przeczytaniu wielu tutoriali wciąż jest para (aka wielu rzeczy) która wydaje się dziwna dla mnie lub czegoś brakuje ...Wiosna - Poradniki kontra prawdziwe życie
Wszystkie tutoriale, które znalazłem, są proste (jak większość tutoriali powinna być), jak widać na Przykład A, jeden kontroler do obsługi żądań (JSP lub WS) i autowirować klasę menedżera, aby wejść w interakcję z bazą danych.
W moim przypadku nie ma to zastosowania, ponieważ aplikacja ma klasę do obsługi żądań, następnie tworzy instancję klasy obsługi, która z kolei tworzy nową klasę do obsługi czegoś innego, co tworzy nową klasę do obsługi (....) *, a następnie obsługuje połączenie z bazą danych, jak widać na Przykład B.
Moje pytanie brzmi: w jaki sposób mogę zrobić mój logiki biznesowej klasy N"Springable", tj stanie dokonać Manager Database autowired wewnątrz niego?
Od wszystkich przykładów, które widziałem, mam wymyślić tych alternatyw:
- Tworzenie autowire do ALL z DbManager wewnątrz kontrolera, a następnie IoC wszystkim gospodarka Klasy, aż osiągną klasę Business Logic n. Ten pójdzie z normami wiosny, ale oznaczałoby najwięcej kodu Refaktoryzacja
- Transform WSZYSTKIE klasach logiki biznesowej w fasoli
- Dodaj SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext (this); do klasy Business Logic n i używać @Autowire aby uzyskać dostęp do DbManager
Am I czegoś brakuje lub jest jakaś inna alternatywa?
Moim zdaniem najlepszym (lub właściwym) podejściem byłoby alternatywa 2. Przekształcenie wszystkich logiki biznesowej i klas dostępu do danych w fasole szparagowe ('@ Service' i' Repository') i zamiast tworzenia instancji w kod, skonfiguruj sprężynę, aby wstrzyknąć te ziarna, gdy jest to konieczne. Możesz użyć znacznika 'component-scan' zamiast obszernego XML, aby uświadomić i opanować te fasole. –