Могу ли я объявить перехватчик жизненного цикла на перехватчике? - PullRequest
1 голос
/ 30 марта 2010

Мой бизнес-бин определен так:

@Local
@Interceptors(BusinessInterceptor.class})
public class MyBean implements SomeBean { ... }

И тогда я хочу, чтобы мой BusinessInterceptor был настроен с SpringBeanAutowiringInterceptor Spring:

@Interceptors(SpringBeanAutowiringInterceptor.class)
public class BusinessInterceptor {
    @Autowired
    private SomeSpringBean someSpringBean;
}

Это разрешено / законно? Я получаю сообщения об ошибках (в основном NPE), указывающие на то, что поля в BusinessInterceptor не были правильно инициализированы.

1 Ответ

1 голос
/ 31 марта 2010

Я сомневаюсь, что это может работать. Если я хорошо понимаю ваш сценарий, у вас в основном два DI-контейнера, один - Spring, а другой - приложение. сам сервер. Каждый управляет различными элементами. BusinessInterceptor создается приложением. сервер, который не знает о Spring - бин @Autowired не устанавливается.

(Обратите внимание, что Spring и EJB3 стали очень похожими. Вы можете иметь те же функции, что и EJB в Spring. Действительно, Spring имеет декларативные транзакции, внедрение зависимостей и средства AOP, подобные перехватчикам EJB3 (это основные управляемые функции). С другой стороны, EJB3 теперь настолько легок, что на самом деле нет веской причины использовать Spring с EJB3. См. Будущее корпоративной Java : полный стек Spring или полный стек Java EE. не отвечаю на вопрос, а просто мое небольшое отступление :) 1007 *

...