Spring MessageSource是否支持多个类路径?
我正在使用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*
语法是一种Spring机制,它允许代码为给定路径加载多个资源。非常便利。但是,ResourceBundleMessageSource
使用标准java.util.ResourceBundle
来加载资源,这是一种更为简单,笨拙的机制,它将为给定路径加载第一个资源,而忽略其他所有内容。
我真的没有一个简单的解决方案。我认为你将不得不放弃ResourceBundleMessageSource
并编写一个自定义实现MessageSource(很可能通过子类化AbstractMessageSource
),该实现用于PathMatchingResourcePatternResolver
定位各种资源并通过MessageSource
接口公开它们。ResourceBundle
不会有太大帮助。
以上是 Spring MessageSource是否支持多个类路径? 的全部内容, 来源链接: utcz.com/qa/430979.html