Czy jest możliwe na wiosnę, że klasa dla fasoli nie ma publicznego konstruktora, ale tylko prywatny? Czy ten prywatny konstruktor zostanie wywołany po utworzeniu komponentu bean? Dzięki.Java Spring bean z prywatnym konstruktorem
Odpowiedz
Tak, Spring może wywoływać prywatnych konstruktorów. Jeśli znajdzie konstruktor z właściwymi argumentami, niezależnie od widoczności, użyje odbicia, aby ustawić jego konstruktor jako dostępny.
Czy możesz podać mi odniesienie do dokumentów? Konstruktor ma parametry, aw pliku xml do tych argumentów przypisane wartości. – user710818
masz na myśli, że jeśli fasola ma konkretnie coś takiego jak prywatna fasola() {} {}} wiosna może ją wywołać? Jak to możliwe, że sprzeciwia się celowi "prywatne". –
Przepraszam, prawdopodobnie jestem w błędzie, ponieważ to tylko konstruktorzy no-arg. Po prostu przechodzę przez to, co zauważyłem w swoich własnych projektach. Nie mogę powiedzieć, że kiedykolwiek widziałem to w dokumentacji Spring. Ale to jest javadoc dla klasy, która jest odpowiedzialna za tworzenie instancji.http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/beans/BeanUtils.html#instantiateClass(java.lang.reflect.Constructor,%20java.lang.Object .. .) –
Normalnie w takich ziarnach zwykle znajduje się statyczna metoda fabryczna, można określić tę metodę dla sprężyny, aby uzyskać instancję tego komponentu bean. Zobacz 3.3.1.3 here. Tak zaleca się wiosną, zamiast ograniczać widoczność.
Dziwne, nie ma metody statycznej, nie ma publicznego konstruktora, ale kiedy robię debugowanie - wywoływany jest prywatny konstruktor! autor: sun.reflect.NativeConstructorAccessorImpl – user710818
Bez podania szczegółów/kodu nie będzie można komentować dalej! –
Przypuszczam, że się mylisz. Nie ma określonego kodu - w debugerze widzę tylko standardowe metody słońca/wiosny. – user710818
Zawsze można użyć metody fabryki stworzyć fasolę zamiast polegać na domyślnego konstruktora z The IoC container: Instantiation using an instance factory method:
<!-- the factory bean, which contains a method called createInstance() -->
<bean id="serviceLocator" class="com.foo.DefaultServiceLocator">
<!-- inject any dependencies required by this locator bean -->
</bean>
<!-- the bean to be created via the factory bean -->
<bean id="exampleBean"
factory-bean="serviceLocator"
factory-method="createInstance"/>
Ma to tę zaletę, że można użyć niestandardowych konstruktorów do fasoli i można również wstrzyknąć zależności dla fasoli metod fabryki.
interesujące, ale nie mogę znaleźć fabryki. Może być inaczej? – user710818
@Matthew: Wygląda na to, że instaluje Spring wokół jakiegoś popularnego kodu innej firmy. To tylko _brak_, żeby być brudny. –
@Donal, nie, nie rozumiem, co powiedział w komentarzu. –
Tak, prywatne konstruktorzy są wywoływane wiosną. Rozważmy mój kod:
Bean plik definicji:
<bean id="message" class="com.aa.testp.Message">
<constructor-arg index="0" value="Hi Nice"/>
</bean>
klasa Bean:
package com.aa.testp;
public class Message {
private String message;
private Message(String msg) {
// You may add your log or print statements to check execution or invocation
message = msg;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public void display() {
System.out.println(" Hi " + message);
}
}
Powyższy kod działa poprawnie. W związku z tym wiosna odwołała się do prywatnego konstruktora.
- 1. vector :: emplace_back dla obiektów z prywatnym konstruktorem
- 2. Spring Security dependency bean bean
- 3. C++ 11 std :: is_convertible zachowanie z prywatnym konstruktorem kopii
- 4. Kotlin - Funkcja fabryczna dla klasy z prywatnym konstruktorem
- 5. Wywołanie metody z adnotacją @Bean w konfiguracji Spring java
- 6. Spring ApplicationContext Bean Scope
- 7. Jakie są różnice między wyliczeniem Java a klasą z prywatnym konstruktorem?
- 8. Czy można zrezygnować z obsługi Spring bean?
- 9. Spring bean z dynamiczną wartością konstruktora
- 10. Java między prywatnym i chronionym
- 11. Spring: jak utworzyć instancję Spring bean, która pobiera parametr runtime?
- 12. Do czego służy prototyp Spring Bean?
- 13. Spring - zamień @Service bean w teście
- 14. Spring - Weird Error in Bean Creation
- 15. Wprowadzić zasób pliku do Spring bean
- 16. Programowo ustawić konkretny obiekt bean - Spring DI
- 17. Metody Java bean dostępu z LambdaMetafactory
- 18. Zwiększona serializacja z prywatnym konstruktorem działa w 1.57 nie w 1.58
- 19. Jaka jest różnica między klasą z prywatnym konstruktorem a klasą szczelną mającą prywatny konstruktor?
- 20. C++: Problemy z konstruktorem
- 21. Java - Metoda wykonana przed domyślnym konstruktorem
- 22. Spring Security Java Config
- 23. Konfiguracja oparta na Java Spring z metodą statyczną
- 24. java, rozszerzenie klasy z konstruktorem klasy głównej ma parametr
- 25. możliwością pominięcia klasy wyjątków Spring partii z konfiguracją Java
- 26. Wiosna Bean z Factory Method z XML Java Config
- 27. Spring: Jak zastąpić komponent bean Environment utworzony w kontekście aplikacji
- 28. Jak skonfigurować kontener składnika Spring bean w celu załadowania pliku właściwości Java?
- 29. Metoda kontrolera przeciążenia w Java Spring
- 30. Jak wybrać instancję Spring bean w środowisku wykonawczym
Co powiesz na wypróbowanie, a następnie opublikowanie wyników? – dm3
To jest trudne - nie mam całego źródła. – user710818