gpt4 book ai didi

spring - 字段 Autowiring 失败异常

转载 作者:行者123 更新时间:2023-12-04 05:21:09 25 4
gpt4 key购买 nike

我正在使用 Spring MVC Portlet,但遇到了问题。我的应用程序在它有一个 bean 时工作正常。如果我想在下面添加另一个 bean,则会发生错误。

错误日志在这里;

ERROR [org.springframework.web.portlet.DispatcherPortlet] - Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'addSinifController': Autowiring of fields failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.project.service.SinifService com.project.controller.AddSinifController.sinifService; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mySinifService' defined in file [/tmp/1-sample_BookCatalog/WEB-INF/classes/com/project/service/SinifService.class]: Instantiation of bean failed; nested exception is java.lang.ExceptionInInitializerError
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessAfterInstantiation(AutowiredAnnotationBeanPostProcessor.java:280)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1011)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:511)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:289)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:286)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:188)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:543)
at
...

我的 application-context.xml ;
<context:annotation-config/>

<context:component-scan base-package="sample.code.listing" />
<context:component-scan base-package="com.project.controller" />
<context:component-scan base-package="com.project.domain" />
<context:component-scan base-package="com.project.service" />

<bean
class="org.springframework.web.portlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="webBindingInitializer">
<bean
class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer">
<property name="propertyEditorRegistrars">
<list>
<ref bean="myPropertyEditorRegistrar" />
</list>
</property>
</bean>
</property>
</bean>

<bean id="myPropertyEditorRegistrar" class="sample.code.listing.utils.MyPropertyEditorRegistrar"/>

<bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basenames">
<list>
<value>content.Language-ext</value>
</list>
</property>
</bean>

<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>

我的 AddSinifController 在这里:
@Controller(value="addSinifController")
@RequestMapping(value="VIEW")
@SessionAttributes(types=Sinif.class)
public class AddSinifController {

@Autowired
@Qualifier("mySinifService")
private SinifService sinifService;

public SinifService getSinifService() {
return sinifService;
}

public void setSinifService(SinifService sinifService) {
this.sinifService = sinifService;
}

private Logger logger = Logger.getLogger(AddSinifController.class);

@RenderMapping(params = "myaction=addsinif")
public String showAddSinifForm(RenderResponse response,ModelMap model){
return "addSinifForm";
}

@RenderMapping(params = "myaction=home")
public String showhome(RenderResponse response,ModelMap model) {
return "home";
}

@InitBinder
public void initBinder(WebDataBinder binder) {
binder.registerCustomEditor(Long.class, new LongNumberEditor());

}
@ModelAttribute("sinif")
public Sinif getCommandObject(){
return new Sinif("sinif");
}
@ModelAttribute(value = "myaction=siniflar")
public List<Sinif> getCommandObject2(){
return sinifService.getSiniflar();
}
@ActionMapping(params="myaction=addSinif")
public void addSinif(@ModelAttribute Sinif sinif,
BindingResult bindingResult, ActionResponse response,
SessionStatus sessionStatus){
Kademe kademe = new Kademe("kademe");
kademe.setId((long) 6);
sinif.setKademe(kademe);
}
sinifService.addSinif(sinif);
response.setRenderParameter("myaction", "addsinif");
sessionStatus.setComplete();

if(!bindingResult.hasErrors()){
System.out.println("hata yok");
sinifService.addSinif(sinif);
response.setRenderParameter("myaction", "addsinif");
sessionStatus.setComplete();
}else{
response.setRenderParameter("myaction", "home");
}
}


}

问候

最佳答案

给出相同的注释

@Qualifier("mySinifService")

到实现您要实例化的 SinifService 接口(interface)的类。基本上,这里的问题是,当您要求 Spring 在 AddSinifController 类中 Autowiring SinifService 接口(interface)时,当您有多个实现您的接口(interface)的类时,Spring 不知道要实例化接口(interface)的哪个实现。通过提供 @Qualifier 注释,您指的是要实例化的特定 bean。

关于spring - 字段 Autowiring 失败异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13680540/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com