Czy jest jakiś sposób, aby uczynić @Resource opcjonalnym? Oznacza to, że jeśli nie mam fasoli typu żądanej przez @Resource, nie otrzymam wyjątku, ale zostanie on ustawiony na wartość null.W jaki sposób czynisz @Resource opcjonalnym?
Odpowiedz
OK wygląda na to, że nie jest możliwe. Musiał użyć @Autowired (required = false). Nie to, czego dokładnie chciałem, ale to zrobi.
To sprawia, że zasób jest opcjonalny, więc jest to, co chcesz zrobić, nawet jeśli tego nie wiesz :) –
Autowired i Resource to dwie różne rzeczy, spróbuj wstrzyknąć
@DanubianSailor - '@ Autowired' jest adnotacją wiosenną, a' @ Resource' jest typową adnotacją Java. Jeśli nie używasz Springa, opcja '@ Autowired' nie byłaby nawet opcją. –
Powinieneś być w stanie użyć fasoli zwyczaj fabryki do osiągnięcia tego celu:
public class OptionalFactoryBean<T> implements BeanFactoryAware, FactoryBean<T> {
private String beanName;
public void setBeanName(String beanName) {
this.beanName = beanName;
}
@Override
public T getObject() throws Exception {
T result;
try {
result = beanFactory.getBean(beanName);
} catch (NoSuchBeanDefinitionException ex) {
result = null;
}
return result;
}
private BeanFactory beanFactory;
@Override
public void setBeanFactory(BeanFactory beanFactory) {
this.beanFactory = beanFactory;
}
private Class<?> objectType = Object.class;
public void setObjectType(Class<?> objectType) {
this.objectType = objectType != null? objectType : Object.class;
}
@Override
public Class<?> getObjectType() {
return objectType;
}
@Override
public boolean isSingleton() {
return true;
}
}
konfiguracja Wiosna dla opcjonalnej fasoli byłoby:
<bean id="myBean" class="mypackage.OptionalFactoryBean" scope="singleton">
<property name="beanName" value="myRealBean"/>
<property name="objectType" value="mypackage.MyRealBean"/>
</bean>
A co można uzyskać null
wstrzykiwany. Następnie możesz zdefiniować:
<bean id="myRealBean" class="mypackage.MyRealBean" ...>
<!-- .... -->
</bean>
jeśli chcesz wstrzyknąć konkretny komponent.
- 1. Jaki jest status #resource ("main.css") w rzutce
- 2. Metoda niestandardowa $ resource resource
- 3. W Zend Framework przy użyciu MultiDB Resource, w jaki sposób skonfigurować awarię bazy danych?
- 4. Metoda z opcjonalnym parametrem
- 5. pobierania obiektu z boost :: opcjonalnym
- 6. Routing z opcjonalnym parametrem
- 7. Dynamic Resource Loading Android
- 8. alias git z opcjonalnym parametrem
- 9. Jak przekierować użytkownika wewnątrz przechwytywacza http-resource-resource?
- 10. Spring @Resource Handling
- 11. Szyny: form_for namespaced resource
- 12. funkcja interaktywna emacs z opcjonalnym prefiksem numerycznym
- 13. Tworzenie trasy z opcjonalnym przedrostkiem ścieżki
- 14. Wprowadzenie vue-resource
- 15. jak uczynić argument opcjonalnym w python argparse
- 16. Jak używać numpy w opcjonalnym typowaniu
- 17. Mapa z opcjonalnym rozpakowaniu w Swift
- 18. funkcja Emitting z opcjonalnym parametrem
- 19. Ustawienie Angular.js $ resource Nagłówek autoryzacji
- 20. XMLHttpRequest for http: // wymagane Cross Resource Resource Sharing (CORS) i preflight zdarzają się tylko w IE
- 21. W jaki sposób __RTC_CheckEsp zaimplementowano?
- 22. W jaki sposób testujecie interfejs?
- 23. W jaki sposób `({...})` zwraca wartość?
- 24. W jaki sposób zaimplementowano HttpSession?
- 25. W jaki sposób powstały livicony?
- 26. W jaki sposób urlenić gwiazdkę?
- 27. Brakujący argument na zamknięcie z opcjonalnym parametrem
- 28. Jak dodać oddzwonienie dla metod $ resource w AngularJS
- 29. JSF2.0 - Komponent kompozytowy z opcjonalnym wyrażeniem metody
- 30. W jaki sposób uczynić wtyczkę maven etty dodatkowym dodatkowym katalogiem?
zobacz tutaj http://stackoverflow.com/questions/3957430/optional-spring-bean-references.To może ci pomóc – PSR
ok wygląda na to, że nie jest to możliwe. Musiał użyć @Autowired (required = false). Nie to, czego dokładnie chciałem, ale to zrobi – MrProper