当前位置: 首页 > 面试题库 >

如何在Spring XML上下文中实现条件资源导入?

申宜
2023-03-14
问题内容

我想实现的功能是“动态”(即基于配置文件中定义的属性)启用/禁用子Spring XML上下文的导入的能力。

我想像这样:

<import condition="some.property.name" resource="some-context.xml"/>

解析属性的位置(为布尔值),如果为true,则导入上下文,否则不导入。

到目前为止,我的一些研究:

  • 编写自定义NamespaceHandler(和相关类),以便我可以在自己的名称空间中注册自己的自定义元素。例如:<myns:import condition="some.property.name" resource="some-context.xml"/>

这种方法的问题在于,我不想复制Spring中的整个资源导入逻辑,而且对我来说,执行此操作所需的委托并不明显。

  • 重写DefaultBeanDefinitionDocumentReader以扩展“ import”元素的解析和解释的行为(在importBeanDefinitionResource方法中发生)。但是我不确定在哪里可以注册此扩展名。

问题答案:

现在,使用Spring 4完全可以做到这一点。

在您的主应用程序内容文件中

<bean class="com.example.MyConditionalConfiguration"/>

MyConditionalConfiguration看起来像

@Configuration
@Conditional(MyConditionalConfiguration.Condition.class)
@ImportResource("/com/example/context-fragment.xml")
public class MyConditionalConfiguration {
    static class Condition implements ConfigurationCondition {
         @Override
         public ConfigurationPhase getConfigurationPhase() {
             return ConfigurationPhase.PARSE_CONFIGURATION;
         }
         @Override
         public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
             // only load context-fragment.xml if the system property is defined
             return System.getProperty("com.example.context-fragment") != null;
         }
    }
}

最后,您将要包含的bean定义放在/com/example/context-fragment.xml中

参见JavaDoc中的@Conditional



 类似资料:
  • 问题内容: 当用户将文件上传到我的Web应用程序时,我想显示比gif动画更有意义的内容。我有什么可能性? 编辑:我正在使用.Net,但我不介意是否有人向我展示平台不可知的版本。 问题答案: 以下是一些常用JavaScript工具包的几种版本。 Mootools- http: //digitarald.de/project/fancyupload/ Extjs- http: //extjs.com/

  • 我有一个索引,其中一些文档有一个名为“access_type”的字段。它可以有两个值,要么是“教师”,要么是“学生”。对于“access_type”的值为“afully”的文档,将有另一个名为“faculties”的字段,这是一个学院名称列表。因此,一个示例文档如下所示: 现在,如果我们有两个输入,比如说一个用于access_type,另一个用于facculties。如果我得到以下输入“facul

  • 我有一个spring boot应用程序。我正在尝试读取一些我放在main/resources文件夹下的文件。我看到spring boot自动读取resources文件夹下的application.properties。但是,它似乎无法读取我放在resources文件夹下的其他xml/文本文件。 我是否应该为程序添加任何附加配置,以自动读取资源文件夹下的所有文件,而不必显式提供路径?

  • 我对Java相当陌生,正在进行我的第一个JPA项目,同时试图理解Netbeans创建的所有对象。我使用向导从数据库表中创建了一个“User”JPA实体。然后我去了AbstractFacade.java,那里有一个超级类,它添加了一个新方法,可以通过电子邮件地址找到特定的用户。 接下来,我UsersFacaceRest.java并添加了以下方法。我不知道为什么在这个例子中我需要@override,因

  • 但我进的是空异常。有什么问题,有人能帮忙吗?

  • 本文向大家介绍Java上传文件进度条的实现方法(附demo源码下载),包括了Java上传文件进度条的实现方法(附demo源码下载)的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Java上传文件进度条的实现方法。分享给大家供大家参考,具体如下: 东西很简单,主要用到commons-fileupload,其中有一个progressListener的接口,该接口可以实现实时更新已上传文件的大小