如果您对SpringMessageSource是否支持多个类路径?感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于SpringMessageSource是否支持多个类路径?的
如果您对Spring MessageSource是否支持多个类路径?感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于Spring MessageSource是否支持多个类路径?的详细内容,我们还将为您解答@spring.message的相关问题,并且为您提供关于Css 不适用于 ReloadableResourceBundleMessageSource、How to resolve warning message Access restriction -The type Resource is not accessible、java – 在Spring MVC框架中不使用MessageSourceAware访问MessageSource的方法、java-假设Spring MessageSource实现是线程安全的吗?的有价值信息。
本文目录一览:- Spring MessageSource是否支持多个类路径?(@spring.message)
- Css 不适用于 ReloadableResourceBundleMessageSource
- How to resolve warning message Access restriction -The type Resource is not accessible
- java – 在Spring MVC框架中不使用MessageSourceAware访问MessageSource的方法
- java-假设Spring MessageSource实现是线程安全的吗?
Spring MessageSource是否支持多个类路径?(@spring.message)
我正在使用Spring框架为基于Web的应用程序设计一个插件系统。插件是classpath上的jar。这样我就能获得诸如jsp之类的资源,请参见下文
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();Resource[] pages = resolver.getResources("classpath*:jsp/*jsp");
到现在为止还挺好。但是我对messageSource有问题。在我看来,ReloadableResourceBundleMessageSource#setBasename不通过“ classpath *:” 支持多个类路径。如果仅使用“ classpath:”,则仅从一个插件获取messageSource。
有谁知道如何从所有插件注册messageSources?是否存在这样的MessageSource实现?
答案1
小编典典这里的问题不是多个类路径或类加载器,而是代码将尝试为给定路径加载多少资源。
该classpath*
语法是一种Spring机制,它允许代码为给定路径加载多个资源。非常便利。但是,ResourceBundleMessageSource
使用标准java.util.ResourceBundle
来加载资源,这是一种更为简单,笨拙的机制,它将为给定路径加载第一个资源,而忽略其他所有内容。
我真的没有一个简单的解决方案。我认为你将不得不放弃ResourceBundleMessageSource
并编写一个自定义实现MessageSource(很可能通过子类化AbstractMessageSource
),该实现用于PathMatchingResourcePatternResolver
定位各种资源并通过MessageSource
接口公开它们。ResourceBundle
不会有太大帮助。
答案2
小编典典通过@ seralex-vi解决方案,基本名称/ WEB-INF / messages无法正常运行。
我覆盖了ReloadableResourceBundleMessageSource类上的方法refreshProperties,该方法同时执行两种类型的基名(classpath *:和/ WEB-INF /)
public class SmReloadableResourceBundleMessageSource extends ReloadableResourceBundleMessageSource {private static final String PROPERTIES_SUFFIX = ".properties";private PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();@Overrideprotected PropertiesHolder refreshProperties(String filename, PropertiesHolder propHolder) { if (filename.startsWith(PathMatchingResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX)) { return refreshClassPathProperties(filename, propHolder); } else { return super.refreshProperties(filename, propHolder); }}private PropertiesHolder refreshClassPathProperties(String filename, PropertiesHolder propHolder) { Properties properties = new Properties(); long lastModified = -1; try { Resource[] resources = resolver.getResources(filename + PROPERTIES_SUFFIX); for (Resource resource : resources) { String sourcePath = resource.getURI().toString().replace(PROPERTIES_SUFFIX, ""); PropertiesHolder holder = super.refreshProperties(sourcePath, propHolder); properties.putAll(holder.getProperties()); if (lastModified < resource.lastModified()) lastModified = resource.lastModified(); } } catch (IOException ignored) { } return new PropertiesHolder(properties, lastModified);}
在spring-context.xml上,你必须具有classpath *:前缀
<bean id="messageSource"> <property name="basenames"> <list> <value>/WEB-INF/i18n/enums</value> <value>/WEB-INF/i18n/messages</value> <value>classpath*:/META-INF/messages-common</value> <value>classpath*:/META-INF/enums</value> </list> </property></bean>
Css 不适用于 ReloadableResourceBundleMessageSource
如何解决Css 不适用于 ReloadableResourceBundleMessageSource?
我正在使用 Spring Framework 和 Thymeleaf。我把我的项目validation.properties。当我使用与validation.properties 连接的方法时,我总是遇到错误,所以我找到了解决它的方法。
就是这个
@Configuration
@EnableWebMvc
public class WebConfiguration implements WebMvcConfigurer {
@Bean
public MessageSource messageSource() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
// Load file: validation.properties
messageSource.setBasename("classpath:validation");
messageSource.setdefaultencoding("UTF-8");
return messageSource;
}
但现在我的 css 文件不适用于该解决方案。我该如何解决?我的css路径是/resources/static/main.css。
Validation.properties 的路径为 /resources/validation.properties。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
How to resolve warning message Access restriction -The type Resource is not accessible
Created by Wang, Jerry, last modified on Jul 08, 2016
本文同步分享在 博客“汪子熙”(CSDN)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
java – 在Spring MVC框架中不使用MessageSourceAware访问MessageSource的方法
我有几个servlet旨在保存自己的消息源,但是有一个静态函数使用此消息源作为备份,并且在正常情况下使用全局BDB来检索本地化文本.
我想知道是否有一种方法可以检索调用此全局静态函数的servlet上下文的MessageSource?
我不能在所有servlet中使用MessageSourceAware.我查看了Spring文档,发现了MessageSourceAware和@autowired属性.我不能使用注释,因为我使用的是Spring 2.0.
任何帮助赞赏.
谢谢,
PARTH
WebApplicationContext webAppContext = RequestContextUtils.getWebApplicationContext(request);
MessageSource messageSource = webAppContext.getBean("messageSource");
java-假设Spring MessageSource实现是线程安全的吗?
是否可以安全地假设org.springframework.context.MessageSource接口的所有实现在初始化后都是线程安全的?
我希望它是安全的,但是现在我正在查看Spring源代码,并且有org.springframework.context.support.ReloadableResourceBundleMessageSource会不时地重新加载属性,并且文档中没有任何关于线程安全的内容. ..
编辑:看来ReloadableResourceBundleMessageSource确实确实在需要的地方被同步了……但是我的原始问题仍然存在.
这么说,从您的应用程序的角度来看,脏读有什么危害?标签或消息值错误?您可能不必担心缺少值,因为如果将JSP或类修改为使用新消息,则必须重新部署整个应用程序.我认为您在这里很安全.
关于Spring MessageSource是否支持多个类路径?和@spring.message的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于Css 不适用于 ReloadableResourceBundleMessageSource、How to resolve warning message Access restriction -The type Resource is not accessible、java – 在Spring MVC框架中不使用MessageSourceAware访问MessageSource的方法、java-假设Spring MessageSource实现是线程安全的吗?等相关内容,可以在本站寻找。
本文标签: