Angularjs @@Controller中的自动连线自定义可重载ResourceBundleMessageSource
我已经构建了一个应用程序,它由客户端的angularJs和后端的SpringMVC组成。我的目的是向客户端公开我的语言属性,以便在JS文件中使用它们。为此,我使用了angular-translate.min.js库,并遵循这些说明: () 其基本思想是创建一个自定义类,该类从ReloadableResourceBundleMessageSource扩展,并重写getAllProperties(Locale)方法。然后,将该自定义类注入@controller,这将以Json格式向客户端返回属性列表。 到目前为止,我的问题是我还无法在@controller中自动连接扩展ReloadableResourceBundleMessageSource的自定义类。我的应用程序在部署阶段总是崩溃,“没有CustomResourceBundleMessageSource类型的合格bean” 我的环境: Spring MVC 3.2.3 角JS 请查找代码: 控制器类:Angularjs @@Controller中的自动连线自定义可重载ResourceBundleMessageSource,angularjs,spring-mvc,internationalization,autowired,Angularjs,Spring Mvc,Internationalization,Autowired,我已经构建了一个应用程序,它由客户端的angularJs和后端的SpringMVC组成。我的目的是向客户端公开我的语言属性,以便在JS文件中使用它们。为此,我使用了angular-translate.min.js库,并遵循这些说明: () 其基本思想是创建一个自定义类,该类从ReloadableResourceBundleMessageSource扩展,并重写getAllProperties(Locale)方法。然后,将该自定义类注入@controller,这将以Json格式向客户端返回属性列表
@Controller
@RequestMapping("/messageBundle")
public class SerializableMessageBundleController {
@Autowired
private CustomResourceBundleMessageSource messageSource;
@RequestMapping(method = RequestMethod.GET)
@ResponseBody
public Properties list(@RequestParam String lang) {
return messageSource.getAllProperties(new Locale(lang));
}
自定义消息源:
public class CustomResourceBundleMessageSource extends ReloadableResourceBundleMessageSource {
public Properties getAllProperties(Locale locale) {
clearCacheIncludingAncestors();
PropertiesHolder propertiesHolder = getMergedProperties(locale);
Properties properties = propertiesHolder.getProperties();
return properties;
}
}
}
ApplicationContext.xml:
<bean id="messageSource" class="com.contgo.CustomResourceBundleMessageSource">
<qualifier value="messageSource"/>
<property name="basename" value="LanguageResources"/>
</bean>
我也尝试添加@qualifier(“messageSource”),但没有成功。
另外,请尝试@Resource和@Inject,两者都不起作用
有人能做到这一点吗?我也遇到了同样的问题,最后它的工作原理如下。 扩展ReloadableResourceBundleMessageSource的类是正确的。 您需要做的就是在applicationContext文件中正确配置它 您将保留原始的ReloadableResourceBundleMessageSource配置:
<bean class="org.springframework.context.support.ReloadableResourceBundleMessageSource" id="messageSource">
<property name="basename" value="LanguageResources"/>
</bean>
<bean class="com.contgo.CustomResourceBundleMessageSource" id="myCustomMessageSource" parent="messageSource"/>
@Autowired
CustomResourceBundleMessageSource myCustomMessageSource;