由于这篇文章和文档:
在 Spring 容器初始化过程中,如果有任何类实现了 MessageSourceAware 接口,Spring 会通过 setMessageSource(MessageSource messageSource) setter 方法自动将 MessageSource 注入到该类中。
但是该对象的访问方法不是很有用,所以我想覆盖该接口并添加一些更有用的方法:
public class MessageSourceEx implements org.springframework.context.MessageSource {
/**
*
*/
@Override
public String getMessage(MessageSourceResolvable source, Locale locale)
throws NoSuchMessageException {
return this.getMessage(source, locale);
}
/**
*
*/
@Override
public String getMessage(String key, Object[] params, Locale locale)
throws NoSuchMessageException {
return this.getMessage(key, params, locale);
}
/**
*
*/
@Override
public String getMessage(String key, Object[] params, String locale, Locale locale2) {
return this.getMessage(key, params, locale, locale2);
}
/**
*
* @param locale Locale
* @param key Key
* @param params Parameters
* @return
*/
public String getMessage(Locale locale, String key, Object... params) {
return this.getMessage(key, new Object[] {params}, locale);
}
/**
*
* @param locale Locale
* @param key Key
* @return
*/
public String getMessage(Locale locale, String key) {
return this.getMessage(key, null, locale);
}
}
但问题是MessageSourceAware
接口需要完全用于 MessageSource 的 setter 方法,并且无法将我的覆盖类作为参数。从另一边,我无法将 MessageSource 强制转换为我的对象 - 它失败并出现异常。
有可能实现这样的事情吗?
谢谢