【问题标题】:Inject dependency into a taglib class?将依赖项注入 taglib 类?
【发布时间】:2010-12-08 16:26:55
【问题描述】:

我正在使用 Spring 3,并希望将一些依赖项注入到作为 taglib 一部分的类中。我可以想象一些使用constructor-arg的混乱,但我希望其他人有更好的主意。

【问题讨论】:

  • “不要这样做”是我的建议。
  • 为什么不呢?我希望我的标签从服务中加载数据。
  • 以下答案有效,但我发现另一个适合我的选项是将静态属性放在标记类上并使用 MethodInvokingFactoryBean 注入它。

标签: java spring taglib


【解决方案1】:

如果您决定从自定义标签访问 Service 或 DAO,那么您需要从标签访问 ApplicationContext,然后获取 Bean。

ApplicationContext applicationContext = WebApplicationContextUtils.getWebApplicationContext(pageContext.getServletContext()); 
MyService myService = applicationContext.getBean(MyService.class);
myService.doSomething();

【讨论】:

  • pageContext 是 TagSupport 中的受保护属性
【解决方案2】:

还有http://www.shredzone.org/projects/jshred/wiki/Spring_supported_Tag_Libraries——它的工作原理是为每个taglib 类创建一个代理类来处理与Spring 的交互,并在需要时使用Spring 生成一个taglib 的实例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-27
    • 2011-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多