Przeglądam jakiś kod źródłowy i widzę kilka defektów fasoli, które nie mają identyfikatora ani nazwy. Osoba, która to zrobiła, nie jest w pobliżu, aby zapytać. Aplikacja działa poprawnie. Nie jestem zaznajomiony z tym, co to oznacza. Ktoś wie, czy to coś znaczy w szczególności?Fasola sprężynowa bez identyfikatora lub nazwy
Odpowiedz
Niektóre komponenty bean nie muszą być dostępne dla innych komponentów w pliku kontekstowym lub programowo. Jak wspomniał JacobM, nie wymagają identyfikatora ani imienia, ponieważ nie są do nich przywoływane.
Taki przykład to PropertyPlaceholderConfigurer, który odczytuje plik właściwości, a następnie pozwala na zamianę właściwości środowiska wykonawczego w definicji kontekstu.
Definicja Przykładem może być
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="myapp.properties" />
</bean>
Javadoc zapewnia dalszą dokumentację na temat tego obiektu, ale w dalszej części pliku można odwołać właściwości z pliku używając tylko średnia szablon zastąpić zastępczy $ {.. .}.
Jedną z możliwości jest to, że można zdefiniować komponent bean w miejscu, a więc nie potrzebujesz identyfikatora, ponieważ nie musisz go nigdzie indziej odwoływać. Że mam obiektu Foo, które ma właściwość bar:
<bean id="foo" class="Foo">
<property name="bar">
<bean class="Bar">
</property>
</bean>
Bar fasola nie potrzebujesz nazwę, ponieważ jest on używany tylko do ustawiania, że jedna właściwość.
Atrybuty id i name są opcjonalne i służą do odwoływania się do definicji komponentu bean z innych definicji. Spójrz na official Spring documentation po więcej szczegółów.
Sprawdź możliwość automatycznego okablowania. Inny komponent bean mógłby odwoływać się do nienazwanego komponentu bean, ustawiając właściwość autowire na wartość byType.
To tylko odgadnięcie. Bez konkretnego przykładu nie mogę powiedzieć nic więcej.
Do nazwy fasoli bez identyfikatora lub nazwy nadal można się odwoływać. Spring nazywa te fasole automatycznie, używając nazwy klasy i jeśli jest więcej niż jeden komponent tej samej klasy, dodaje do nich liczbę. Ziarna anonimowe są zwykle definiowane wewnątrz znacznika właściwości, ale jeśli są po prostu możliwe, istnieje możliwość skonfigurowania automatycznego konfigurowania w innych komponentach bean. W każdym razie myślę, że dodanie nazwy lub identyfikatora do tych ziaren nie przerwie twojej aplikacji.
Jako kilka osób wymienionych powyżej, nie wszystkie fasolki są oparte na nazwie/ID; część opiera się na typie. Na przykład, nie jest to metoda
BeanFactoryUtils.beansOfTypeIncludingAncestors (...)
że chwyta wszystkie fasole jakiegoś danego typu. Jest to używane na przykład przez Spring Web MVC DispatcherServlet (w wielu innych miejscach) do odkrywania fasoli według typów, takich jak HandlerMappings, HandlerAdapters, HandlerExceptionResolvers i tak dalej. Porównaj to z przypadkami, w których komponent bean musi mieć określoną, dobrze znaną nazwę/identyfikator, który można znaleźć, na przykład LocaleResolver (identyfikator musi być "localeResolver" lub nie zostanie znaleziony) i ThemeResolver (identyfikator musi być "themeResolver" lub nie zostanie znaleziony).
Ziarna określone bez nazwy i ID mogą być dostępne z wygenerowanym ID (nazwa pakietu i nazwa klasy), na przykład:
fasoli zdefiniowane jako
<bean class="pl.finsys.initOrder.TestBeanImpl">
można uzyskać przez
TestBean bean = (TestBean) ctx.getBean("pl.finsys.initOrder.TestBeanImpl");
// Bean Cfg bez Bean id
<bean class="com.ds.DemoBean"> <property name="msg" value="Hello"/> </bean>
// mamy dostęp
Object obj = factory.getBean ("com.ds.DemoBe
nie jest to obowiązkowe, aby zapewnić java Bean Id..If nie dostarczają Bean Id, nasz Kontener podaje domyślny identyfikator Id.Default Identyfikator fasoli wygląda jak "(Nazwa pakietu). (Nazwa klasy Bean) #N" gdzie N = 0,1,2, ...... itd.
Wygląda na to, że istnieje subtelna różnica między nienazwanym i nazwanym zachowaniem fasoli. Jeśli plik konfiguracyjny XML jest importowany dwukrotnie, każdy nazwany komponent bean zostanie utworzony tylko raz, ale nienazwany komponent bean zostanie utworzony tyle razy, ile zawiera jego definicja. Gdy próbuje się skompilować taką fasolę według typu, prowadzi to do takich błędów:
No qualifying bean of type [your.class.Name] is defined: expected single matching bean but found 4
- 1. Get elementu przez część nazwy lub identyfikatora
- 2. Ndb wyszukiwarki aplikacji Google: używając identyfikatora lub nazwy klucza?
- 3. Mapowanie NHibernate bez identyfikatora
- 4. Adres URL bez identyfikatora
- 5. Tabela MySql bez identyfikatora sekwencyjnego
- 6. przeglądarka powrotem + viewscope fasola
- 7. Aplikacja Facebook: pobranie nazwy użytkownika z identyfikatora
- 8. statyczna metoda bez nazwy
- 9. Wstążka sprężynowa otrzymująca 404 nie została znaleziona
- 10. Umiarkowana wtyczka komentarzy bez identyfikatora aplikacji?
- 11. Wiosna, fasola i wartość enumOf
- 12. Wiosenna fasola Clojure
- 13. Uzyskiwanie następnego identyfikatora bez wstawiania wiersza
- 14. javadoc bez nazwy pakietu
- 15. Połączenie z Oracle bez nazwy użytkownika lub hasła
- 16. upuść indeks lub ograniczenie bez znajomości jego nazwy dla Oracle
- 17. Czy możesz programowo uzyskać dostęp do bieżącego identyfikatora/nazwy Heroku?
- 18. Jak odziedziczyć szablon bez identyfikatora w Odoo?
- 19. Modelowanie obiektów bez identyfikatora w danych embera
- 20. Jak użyć identyfikatora lub klasa zamiast używać nazwy w Bootstrap Validator
- 21. Viewscoped JSF i CDI fasola
- 22. Pobierz JSONArray bez nazwy tablicy?
- 23. XPath, aby znaleźć elementy, które nie mają identyfikatora lub klasy
- 24. Uzyskiwanie nazwy nadrzędnej identyfikatora URI/adresu URL od nazwy absolutnej C#
- 25. Czy można zarejestrować się na Facebooku bez identyfikatora e-mail?
- 26. partia sprężynowa używa różnych menedżerów transakcji między repozytorium zadań a rzeczywistymi zadaniami
- 27. SQL-jak wstawić wiersz bez automatycznej inkrementacji kolumny identyfikatora?
- 28. Szyny 3 URL bez nazwy kontrolera
- 29. Używanie wtyczki zamiast identyfikatora
- 30. wiosna: fasola, że otrzymuje listę klas
Rozważ umieszczenie przykładowej definicji - nie widząc definicji w kontekście, trudno jest dać konkretną odpowiedź. –
Jeśli żadna nazwa nie zostanie podana jawnie, kontener wygeneruje unikalną nazwę dla tego komponentu bean. – lolotron
Domyślnie identyfikator komponentu bean jest generowany przez wielbłądzową nazwę klasy. – lolotron