Как работать с ConfigurableListableBeanFactoty (не могу зарегистрировать BeanPostProcessor)?
Добрый день.
Создаю свой BeanPostProcessor и хочу его добавить явно (не с помощью bean).
Делаю в Spring MVC так:
public class BuhApp implements WebApplicationInitializer { @Override public void onStartup(ServletContext servletContext) { AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext(); context.register(BuhAppConfig.class); context.getBeanFactory().addBeanPostProcessor(new MyBeanPostProcessor()); DispatcherServlet servlet = new DispatcherServlet(context); ServletRegistration.Dynamic registration = servletContext.addServlet("app", servlet); registration.setLoadOnStartup(1); registration.addMapping("/*"); } } |
Но в результате выдает ошибку:
Caused by: java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 'refresh' before accessing beans via the ApplicationContext
Посмотрел в интернете. Там делают так же, но не в Spring MVC, и там работает. А в Spring MVC нет.
P.S. Не нужно советовать зарегистрировать как бин. Это я знаю. Интересует как сделать с помощью ConfigurableBeanFactory.
Дополнительно:
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для работы с ConfigurableListableBeanFactory и регистрации BeanPostProcessor в Spring Framework есть несколько шагов, которые необходимо выполнить.
1. Создайте класс, который реализует интерфейс BeanPostProcessor. Например:
2. Зарегистрируйте этот класс в вашем конфигурационном файле Spring. Например, в файле applicationContext.xml:
3. Укажите ConfigurableListableBeanFactory как зависимость в вашем классе. Например:
4. В методе, где вы создаете экземпляр CustomClass, передайте ему ConfigurableListableBeanFactory. Например:
После выполнения этих шагов вы сможете успешно работать с ConfigurableListableBeanFactory и зарегистрировать BeanPostProcessor в вашем приложении на основе Spring Framework. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать их.