我有一个使用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>()