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

Spring MessageSource是否支持多个类路径?

滑骞尧
2023-03-14
问题内容

我正在使用Spring框架为基于Web的应用程序设计一个插件系统。插件是classpath上的jar。这样我就能获得诸如jsp之类的资源,请参见下文

ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
Resource[] pages = resolver.getResources("classpath*:jsp/*jsp");

到目前为止,一切都很好。但是我对messageSource有问题。在我看来,ReloadableResourceBundleMessageSource#setBasename不通过“
classpath :” 支持* 多个类路径。如果仅使用“ classpath:”,则仅从一个插件获取messageSource。

有谁知道如何从所有插件注册messageSources?是否存在这样的MessageSource实现?


问题答案:

这里的问题不是多个类路径或类加载器,而是代码尝试为给定路径加载多少资源。

classpath*语法是一个弹簧机构,一个允许的代码来加载多个资源对于给定的路径。非常便利。但是,ResourceBundleMessageSource使用标准java.util.ResourceBundle来加载资源,这是一种简单得多的笨拙机制,它将为给定路径加载第一个资源,而忽略其他所有内容。

我真的没有一个简单的解决方案。我认为您将不得不放弃ResourceBundleMessageSource并编写一个自定义实现MessageSource(很可能通过子类化AbstractMessageSource),该实现用于PathMatchingResourcePatternResolver定位各种资源并通过MessageSource接口公开它们。ResourceBundle不会有太大帮助。



 类似资料:
  • 问题内容: Python是否支持短路? 问题答案: 是的操作员都短路了-请参阅docs。

  • Workerman有一个依赖pthreads扩展的MT多线程版本,但是由于pthreads扩展还不够稳定,所以这个Workerman多线程版本已经不再维护。 目前Workerman及其周边产品都是基于多进程单线程的。

  • 根据维基百科关于子结构类型系统的文章,F*支持某种线性类型。这是真的吗?如果有,如何?我在F*教程中找不到任何关于它的信息。

  • 问题内容: 在Microsoft SQL Server中,可以指定“不区分重音”的排序规则(对于数据库,表或列),这意味着可以对诸如 查找具有名称的行。 我知道可以使用unaccent_string contrib函数从PostgreSQL中的字符串中去除重音符号,但是我想知道PostgreSQL是否支持这些“不区分重音符号”的排序规则,因此上述方法可行。 问题答案: 为此,请使用 unaccen

  • 问题内容: 因此,我希望将其转换为这样的Java代码: JAXB是否可能? 曾经看到一些WebService Client存根生成器正在执行此操作,但也许不确定axis2 Webservice。 问题答案: 的 JAXB(JSR-222) 规范没有盖产生快速失败逻辑到域模型。现在,一种常见的做法是以注释(或XML)的形式表示验证规则,并对它们进行验证。 Bean验证(JSR-303) 对此进行了标

  • 问题内容: 我正在尝试执行一个简单的INSERT并返回标识(自动递增主键)。我试过了 我收到以下错误 SQLite是否支持SCOPE_IDENTITY? 如果可以,该如何使用? 如果不是,我(最好是“线程安全”)的替代方案是什么? 问题答案: 查看常见问题解答。该sqlite3_last_insert_rowid()函数将做到这一点。不过要小心触发器。