Angularjs @@Controller中的自动连线自定义可重载ResourceBundleMessageSource

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格式向客户端返回属性列表

我已经构建了一个应用程序,它由客户端的angularJs和后端的SpringMVC组成。我的目的是向客户端公开我的语言属性,以便在JS文件中使用它们。为此,我使用了angular-translate.min.js库,并遵循这些说明: ()

其基本思想是创建一个自定义类,该类从ReloadableResourceBundleMessageSource扩展,并重写getAllProperties(Locale)方法。然后,将该自定义类注入@controller,这将以Json格式向客户端返回属性列表。 到目前为止,我的问题是我还无法在@controller中自动连接扩展ReloadableResourceBundleMessageSource的自定义类。我的应用程序在部署阶段总是崩溃,“没有CustomResourceBundleMessageSource类型的合格bean”

我的环境: Spring MVC 3.2.3 角JS

请查找代码:

控制器类:

@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;