есть ли изящный способ ввести пружинный управляемый компонент в Java пользовательский/простой тег

У меня есть набор Java пользовательские теги та пружина использования управляемые компоненты.. так как я не могу найти способ ввести в пользовательский тег, я создал класс помощника, который обеспечивает статические методы для "getTheObjectINeedBean ()" для всех пружинных бобовых объектов, в которых я нуждаюсь.. Мне не нравится этот подход вообще.

я действительно хочу смочь ввести пружинный управляемый компонент в пользовательский тег

Существует ли путь? Насколько мое исследование идет, я понимаю, что нет никакого способа сделать это, потому что пользовательский тег является управляемым контейнером

Спасибо,

Billy

11
задан Billworth Vandory 10 August 2010 в 03:56
поделиться

1 ответ

Вы правы, нет простого способа использовать dependency-injection в jstl-тегах, потому что они не управляются spring, и не могут быть. Однако есть (по крайней мере) два обходных пути:

  • @Configurable - aspectJ позволяет вам подключать weaver во время загрузки/компиляции, так что даже объекты, которые не инстанцируются spring, могут быть spring aware. Смотрите здесь

  • Вы можете создать базовый класс тега для вашего проекта, и вызывать метод init(...) из каждого метода doStartTag(...). Там вы можете получить ServletContext из pageContext, и таким образом получить весенний ApplicationContext (через ApplicationContextUtils). Затем:

    AutowireCapableBeanFactory factory = appCtx.getAutowireCapableBeanFactory();
    factory.autowireBean(this);
    

Ни один из вариантов не является идеальным, поскольку требует либо дополнительного кода, либо "черной магии"

7
ответ дан 3 December 2019 в 08:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: