【发布时间】:2014-08-22 10:10:43
【问题描述】:
假设我创建了一个名为@EnableFeauture 的注解,它导入了一个bean 配置类EnableFeatureConfiguration。此注释通常放置在调度程序配置的顶部。视图解析器等 bean 必须属于该调度程序配置,但一些 bean 确实属于根上下文。
如何在不需要其他注释的情况下定义这些 bean?我的第一个想法是自动连接WebApplicationContext 并调用context.getParentBeanFactory() 来注册bean,但我不确定这是否是实现我目标的最佳方式。这通常是如何完成的?
更新
稍微澄清一下问题。我正在开发一个将模板引擎与 Spring MVC 集成的项目。该项目由以下类别/部分组成:
- 配置
- 注解,例如
EnableFeature(导入配置) - 查看
- ViewResolver
- 模板工厂
从逻辑上讲,所有类类别都可以存在于 Web 应用程序上下文中。但是,模板工厂也可以被其他服务(电子邮件等)使用。主要存在于根上下文中的服务。所以我基本上要问的是,我怎样才能以一种干净的方式使工厂对根上下文可用。我希望所需的配置尽可能低。到目前为止,该设置只需要在调度程序配置类的顶部放置一个注释。
【问题讨论】:
-
很难理解您的问题。澄清一下:1)Spring ref 中的以下引用为您保留[...],您通常会通过 Spring 的 ContextLoaderListener 加载一个根 WebApplicationContext,并通过 Spring 的 DispatcherServlet 加载一个子 WebApplicationContext。? 2) 你想通过你自己的注释将额外的bean引入你的子上下文,一些新bean甚至是父上下文。如果是这样,你想如何区分? “您的注释中”的代码是否包含决定是在子级还是父级中注册 bean 的逻辑?
-
您能否详细说明您要达到的目标(功能级别)?以及为什么你认为你需要一个自定义注释来做到这一点?
-
查看我更新的问题。我希望这可以减少混乱
-
@Hille 我有一个
ImportAware配置,它是通过使用配置一些bean 的注释@EnableFeature导入的。然而,一个 bean(模板工厂)将更适合根上下文。但我不确定如何以干净的方式实现这一目标。 -
@SergeBallesta 我希望现在更清楚了:)
标签: java spring spring-mvc applicationcontext spring-java-config