У меня есть класс обслуживания, аннотированный аннотацией @Service как класс A, и я реализую BeanFactoryAware в A. Теперь я устанавливаю BeanFactory с помощью метода setBeanFactory. Я пытаюсь загрузить компонент «B» с использованием метода beanFactory.getBean. Теперь в этом случае обязательно указать бит «B» в файле application-context.xml?beanFactory.getBean не загружается bean
ответ
Есть 2 способа ..
первого один
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean id="b" class="your.package.B" />
</beans>
второго один
Spring будет проверять эту папку и найти боб (аннотированный с @Component, @ Службы, @Repository и т. Д.) И зарегистрировать его
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd">
<context:component-scan base-package="your.package" />
</beans>
я предлагаю использовать ..
public class Application implements ApplicationContextAware{
private ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext applicationContext)throws BeansException {
this.applicationContext = applicationContext;
}
}
и метод
B b = applicationContext.getBean("b");
Если впрыснуть BeanFactory
в классе А, а затем попытаться получить боб b
с beanFactory.getBean
, фасоль b
сусло быть объявлен в том же контексте приложения, что и bean a
, или в родительском контуре этого приложения.
конкретных случаев использования для стандартного веба-приложения с корневым контекстом приложения и контекста приложения сервлета для DispatcherServlet
:
- если
A
в этом корневом контексте приложения,B
должны быть объявлены в контексте приложения корневого - , если
A
в контексте приложения является сервлет,B
могут быть объявлены либо в контексте приложения сервлет или в корне один
Но если единственной причиной этого является использование фасоли B
в фасоли A
было бы лучше, чтобы непосредственно вводить его вместо BeanFactory
(с теми же правилами для contextes применения)
- 1. Java Bean не загружается
- 2. PropertyPlaceholderConfigurer не загружается программно
- 3. Bean не
- 4. Freemarker не загружается удаленным шаблон
- 5. Проект Spring Framework не загружается?
- 6. @ViewScoped Управляемый bean-компонент многократно загружается во время обратной передачи
- 7. p: commandbutton не вызывает метод bean bean
- 8. Session Bean Scoped не Session Bean Scoped
- 9. @Configuration боб не загружается первым
- 10. Новый экземпляр ViewScoped Bean на нескольких файлах. Загружается
- 11. jQuery не загружается и не загружается дважды
- 12. jqGrid не загружается с использованием @Transactional
- 13. управляемый bean logout не работает
- 14. получить значение свойства bean bean bean из другого bean-компонента
- 15. Session Bean не работает
- 16. Bean scope не работает
- 17. Java Bean не признается
- 18. @Autowired bean не найден
- 19. Bean свойства не обновляются
- 20. Bean не получает Autowired
- 21. @Qualifier не подбирает @Bean
- 22. Bean не экземпляр
- 23. Struts bean не найден
- 24. Spring Bean не автоувеличивается
- 25. Сайт не загружается, но при обновлении загружается?
- 26. Почему программно созданный bean-компонент недоступен в контексте приложения
- 27. Весеннее приложение загружается дважды
- 28. Spring Java Config - @Bean Overriding Определение Bean не работает
- 29. Весенняя ботинок: не удалось автосогласовать bean, но bean определен точно
- 30. методы Bean выполняется даже если методы Bean не называется