如何在运行时在春季加载其他bean配置文件

吴彦祖

我有一个spring应用程序,将来我们将开发更多的类,对于这些类,我们还将使用其他配置文件(而不是覆盖现有文件)来定义bean。那么如何动态加载它们呢?我知道有一个ApplicationContextAware接口,我可以运行一个Bean来检查是否有新的配置文件,如果有,我可以运行

setApplicationContext(ApplicationContext applicationContext)

但是,然后如何使用ApplicationContext加载其他配置文件?

更新:如果应用程序是从XML加载的,那么我可以将ApplicationContext转换为ClassPathXmlApplicationContext,然后使用load方法,但是如果AnnotationConfigApplicationContext它仅具有扫描程序包的扫描方法,但是如果我想从xml加载怎么办?

更新:以下是我要使用的代码,它使用spring集成来监视折叠,在运行时我可以将jar文件放在类路径中,然后将xml配置放在该文件夹中,这将触发loadAdditionBeans函数要运行,并将传递xml File对象,需要做的是将该File中的上下文添加到当前上下文中,但不创建子上下文。

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.integration.annotation.MessageEndpoint;
import org.springframework.integration.annotation.ServiceActivator;

import java.io.File;

@MessageEndpoint
public class FolderWatcher implements ApplicationContextAware {
    //private ApplicationContext ctx;
    private AnnotationConfigApplicationContext ctx;  // it's a spring boot,so the ctx is AnnotationConfigApplicationContext
    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        this.ctx=(AnnotationConfigApplicationContext)applicationContext;
    }
    @ServiceActivator
    public void loadAdditionBeans(File file){
        /*
        file is an xml configuration file, how to load the beans defined it into the currect context,
        I don't what to have another hierarchy, since that will make the beans defined in the file not
        available in parent.
         */
    }

}
安迪·杜弗雷斯(Andy Dufresne)
PathMatchingResourcePatternResolver pmrl = new PathMatchingResourcePatternResolver(context.getClassLoader());
  Resource[] resources = pmrl.getResources(
    "classpath*:com/mycompany/**/applicationContext.xml"
  );

for (Resource r : resources) {
   GenericApplicationContext createdContext = new GenericApplicationContext(context);
   XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(createdContext);
   int i = reader.loadBeanDefinitions(r);
}

请看上面的代码,让我知道它是否有助于解决您的问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在运行时修改配置文件

来自分类Dev

如何在运行时从其他文件访问字典

来自分类Dev

如何在运行时从其他文件访问字典

来自分类Dev

如何在运行时从文件加载 HTML 模板?

来自分类Dev

春季在运行时添加bean

来自分类Dev

在运行时获取配置文件的EXPIRATION日期?

来自分类Dev

使NLog配置文件用户在运行时定义

来自分类Dev

当Firefox运行时,如何查找正在运行的Firefox配置文件?

来自分类Dev

如何在运行时使用自定义的PropertyValueEditor访问其他PropertyValue

来自分类Dev

如何在运行时根据其他表中的值添加新列?

来自分类Dev

如何在运行时使用其他形状制作自定义圆形?

来自分类Dev

如何在运行时选择Spring bean实例

来自分类Dev

如何制作 jar 文件以在运行时加载图像

来自分类Dev

如何在运行时加载Blazor页面?

来自分类Dev

如何在运行时加载模块?

来自分类Dev

如何在运行时加载图像 tkinter?

来自分类Dev

如何在运行时配置Ecto?

来自分类Dev

如何在运行时从下载的jar文件中加载未知类?

来自分类Dev

如何在运行时从Assets文件夹加载JAR

来自分类Dev

在我的情况下如何在运行时加载JS文件?

来自分类Dev

如何在运行时从程序包中以编程方式配置karaf / etc文件?

来自分类Dev

在运行时加载JSON文件

来自分类Dev

在运行时加载JSON文件

来自分类Dev

使用Gunicorn运行时如何在运行时更改flask配置变量

来自分类Dev

在运行时在Ansible 1.9中指定SSH配置文件

来自分类Dev

是否可以在运行时在不同的Winform项目上使用不同的配置文件?

来自分类Dev

Dalvik运行时编译器或其他方式,以在运行时加载类

来自分类Dev

如何在运行时读取tekst文件

来自分类Dev

如何在运行时处理重复文件

Related 相关文章

  1. 1

    如何在运行时修改配置文件

  2. 2

    如何在运行时从其他文件访问字典

  3. 3

    如何在运行时从其他文件访问字典

  4. 4

    如何在运行时从文件加载 HTML 模板?

  5. 5

    春季在运行时添加bean

  6. 6

    在运行时获取配置文件的EXPIRATION日期?

  7. 7

    使NLog配置文件用户在运行时定义

  8. 8

    当Firefox运行时,如何查找正在运行的Firefox配置文件?

  9. 9

    如何在运行时使用自定义的PropertyValueEditor访问其他PropertyValue

  10. 10

    如何在运行时根据其他表中的值添加新列?

  11. 11

    如何在运行时使用其他形状制作自定义圆形?

  12. 12

    如何在运行时选择Spring bean实例

  13. 13

    如何制作 jar 文件以在运行时加载图像

  14. 14

    如何在运行时加载Blazor页面?

  15. 15

    如何在运行时加载模块?

  16. 16

    如何在运行时加载图像 tkinter?

  17. 17

    如何在运行时配置Ecto?

  18. 18

    如何在运行时从下载的jar文件中加载未知类?

  19. 19

    如何在运行时从Assets文件夹加载JAR

  20. 20

    在我的情况下如何在运行时加载JS文件?

  21. 21

    如何在运行时从程序包中以编程方式配置karaf / etc文件?

  22. 22

    在运行时加载JSON文件

  23. 23

    在运行时加载JSON文件

  24. 24

    使用Gunicorn运行时如何在运行时更改flask配置变量

  25. 25

    在运行时在Ansible 1.9中指定SSH配置文件

  26. 26

    是否可以在运行时在不同的Winform项目上使用不同的配置文件?

  27. 27

    Dalvik运行时编译器或其他方式,以在运行时加载类

  28. 28

    如何在运行时读取tekst文件

  29. 29

    如何在运行时处理重复文件

热门标签

归档