У меня есть набор Java пользовательские теги та пружина использования управляемые компоненты.. так как я не могу найти способ ввести в пользовательский тег, я создал класс помощника, который обеспечивает статические методы для "getTheObjectINeedBean ()" для всех пружинных бобовых объектов, в которых я нуждаюсь.. Мне не нравится этот подход вообще.
я действительно хочу смочь ввести пружинный управляемый компонент в пользовательский тег
Существует ли путь? Насколько мое исследование идет, я понимаю, что нет никакого способа сделать это, потому что пользовательский тег является управляемым контейнером
Спасибо,
Billy
Вы правы, нет простого способа использовать dependency-injection в jstl-тегах, потому что они не управляются spring, и не могут быть. Однако есть (по крайней мере) два обходных пути:
@Configurable
- aspectJ позволяет вам подключать weaver во время загрузки/компиляции, так что даже объекты, которые не инстанцируются spring, могут быть spring aware. Смотрите здесь
Вы можете создать базовый класс тега для вашего проекта, и вызывать метод init(...)
из каждого метода doStartTag(...)
. Там вы можете получить ServletContext
из pageContext
, и таким образом получить весенний ApplicationContext
(через ApplicationContextUtils
). Затем:
AutowireCapableBeanFactory factory = appCtx.getAutowireCapableBeanFactory();
factory.autowireBean(this);
Ни один из вариантов не является идеальным, поскольку требует либо дополнительного кода, либо "черной магии"