taglib -> внедрение зависимостей pojo / service как? - PullRequest
1 голос
/ 27 сентября 2008

Есть ли хороший способ внедрения зависимостей с помощью jsp taglib?

используя ejb 3.0, spring или guice ...

У меня есть много сервисов / программ, которые я хотел бы использовать в моих taglibs

Ответы [ 3 ]

1 голос
/ 27 сентября 2008

Я думаю, что вы хотите Шов , это позволяет вам ссылаться на компонент по имени. Тем не менее, выпущенная версия основана на JSF, но это меняется.

0 голосов
/ 02 января 2014

Сохраните ссылку на ваш инжектор в servletContext, а затем используйте в каждом теге по мере необходимости. Смотри

В настройках Guice:

public class GuiceServletConfig extends GuiceServletContextListener {

@Override
protected Injector getInjector() {
    return Guice.createInjector(blah, blah);
}

@Override
public void contextDestroyed(ServletContextEvent servletContextEvent) {
    ServletContext servletContext = servletContextEvent.getServletContext();
    servletContext.removeAttribute(Injector.class.getName());
    super.contextDestroyed(servletContextEvent);
}

@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
    Injector injector = getInjector();
    ServletContext servletContext = servletContextEvent.getServletContext();
    servletContext.setAttribute(Injector.class.getName(), injector);
    super.contextInitialized(servletContextEvent);
}

}

А потом в вашем taglib:

@Singleton
@SuppressWarnings("serial")
public class MySampleTag extends TagSupport {
@Inject private MyInjectedService myService;

@Override
public int doStartTag() throws JspException {
    Injector injector = (Injector) pageContext.getServletContext().getAttribute(Injector.class.getName());
    injector.injectMembers(this);

    String value = myService.doSomething();
            etc.
            etc.
0 голосов
/ 20 июля 2009

просто наткнулся на ваш вопрос, потому что я планирую сделать то же самое. На самом деле вы можете использовать Spring и его аннотацию @Configurable (с ткачеством AspectJ во время загрузки или компиляции во время компиляции) для внедрения сервисов в ваши реализации тегов. Для подробного объяснения всех вариантов взгляните на сообщение в блоге Рамниваса здесь .

Надеюсь помочь, если вам все еще нужно решение ...

...