使用@AutoWire在组件扫描之外访问bean

时间:2015-08-06 09:36:06

标签: java spring

我有一个使用Spring编写的Java项目,并且遇到了@Autowire bean的问题。 bean的声明

<beans:bean id="messageSource"  class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
    <beans:property name="basenames" value="classpath:messages"/>
    <beans:property name="defaultEncoding" value="UTF-8" />
</beans:bean>

我的班级BaseController中的bean自动装配没有问题属于组件扫描

<context:component-scan base-package="com.myproj.webservice.controller" />

我希望@Autowire在另一个不属于MessageEnum的班级component-scan中。我曾尝试将autowire="byType"autowire="byName"添加到我的bean声明中,但自动装配仍无效。

请在此处查找MessageEnum

的代码
public enum MessageEnum{
    ENUM1("someparam"),
    ENUM2("someparam2");

    @Autorwire
    private MessageSource messageSource;

    private String param;

    //Constructors & getParam and setParam methods

    public MessageSource getMessageSource() {
        return messageSource;
    }
}

我在这里错过了messageSource自动装配的内容吗?

修改

我尝试在此处建议将MessageEnum创建为bean。我创建了默认构造函数         MessageEnum() {}

并在我的xml中设置bean

<beans:bean id="messageEnum" class="com.myproj.webservice.util.MessageEnum">

但收到错误消息

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'messageEnum' defined in ServletContext resource [/WEB-INF/spring/appServlet/servlet-context.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.myproj.webservice.util.MessageEnum]: No default constructor found; nested exception is java.lang.NoSuchMethodException: com.myproj.webservice.util.MessageEnum.<init>()

0 个答案:

没有答案