2017-04-01 2 views
-1

Ich schrieb es als Singleton vor, es gab keine Fehler. Aber ich denke, ich sollte es Instanz pro Anfrage machen. Und ich habe den CodeWie konfiguriere ich Spring Bean für den Prototyp?

<!--Dao configuration--> 
<bean id="userDao" class="org.mybatis.spring.mapper.MapperFactoryBean" scope="request"> 
    <property name="mapperInterface" value="Dao.UserDao"></property> 
    <property name="sqlSessionFactory" ref="sqlSessionFactory"></property> 
</bean> 


package Test; 
import org.springframework.beans.factory.annotation.Required; 
import org.springframework.context.annotation.Scope; 
import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.PathVariable; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.ResponseBody; 
import Common.InitDataBases; 
import Common.Controller.OutputStringController; 
import Dao.UserDao; 
import Model.User; 
import java.util.List; 

import org.apache.log4j.Logger; 

@Controller 
@Scope("request") 
public class Hello extends OutputStringController{ 
    private UserDao uDao; 
    @RequestMapping(value = "/getUser", produces = "text/html;charset=UTF-8") 
    @ResponseBody 
    public String dbTest(String username) { 
     System.out.println(uDao.findByUsername(username).getUsername()); 
     return success(""); 
    } 
    @Required 
    public void setuDao(UserDao uDao) { 
     this.uDao = uDao; 
    } 

} 

und es eine Ausnahme ausgelöst hat.

org.springframework.beans.factory.BeanInitializationException: Property 'uDao' is required for bean 'hello' 
    at org.springframework.beans.factory.annotation.RequiredAnnotationBeanPostProcessor.postProcessPropertyValues(RequiredAnnotationBeanPostProcessor.java:155) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1225) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:552) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$2.getObject(AbstractBeanFactory.java:345) 
    at org.springframework.web.context.request.AbstractRequestAttributesScope.get(AbstractRequestAttributesScope.java:44) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:340) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) 
    at org.springframework.web.method.HandlerMethod.createWithResolvedBean(HandlerMethod.java:255) 
    at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.getHandlerInternal(AbstractHandlerMethodMapping.java:323) 
    at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.getHandlerInternal(AbstractHandlerMethodMapping.java:61) 
    at org.springframework.web.servlet.handler.AbstractHandlerMapping.getHandler(AbstractHandlerMapping.java:352) 
    at org.springframework.web.servlet.DispatcherServlet.getHandler(DispatcherServlet.java:1131) 
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:936) 
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897) 
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) 
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:624) 
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:218) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:442) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1082) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:623) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    at java.lang.Thread.run(Thread.java:745) 

und ich kann keine Lösung dafür finden. Ich möchte es gerne machen: Jede HTTP-Anfrage wird einen Controller, einen Dienst und ein Dao erstellen. Hilfe!

+0

Wenn das Problem noch nicht behoben ist, dann können Sie bitte hinzufügen, wo Benutzer Dao Klassencode hier –

+0

Danke, ich verstehe immer noch nicht DAO Config aber ich mache den Service und Controller "Prototyp", denke ich, es befriedigt mich. –

Antwort

0

auf Ausnahme der Suche

org.springframework.beans.factory.BeanInitializationException: Anwesen 'uDao' wird für Bean 'Hallo' benötigt

uDao ist nicht für die Injektion in die Bean konfiguriert.

Versuchen Sie es mit

@Autowired 
private UserDao uDao; 

auch sicherstellen, wenn die Komponente Scan in der XML-Konfiguration aktiviert ist.

+0

Ich benutze dies, und wenn der UserDao Singleton ist, ist es ok.aber ich write es als "Prototyp" und es werfen –

+0

org.springframework.beans.factory.NoSuchBeanDefinitionException: Keine qualifizierende Bohne des Typs 'Dao.UserDao' verfügbar: –

+0

können Sie überprüfen, ob es eine Bean-Definition für die Klasse UserDao in der Frühjahrskonfiguration XML-Datei gibt – praveen

0

Sie nicht @Scope ("request") diese benötigen, ist die Standardeinstellung Prototyp in springmvc

+0

Wie kann ich wissen, ich bin Chinesisch mein Englisch baolu? –

+0

aber ich habe ein Dao-Feld, ich brauche Prototyp und Anfrage –

+0

Sie nicht diese Notiz ändern, denke, Sie könnten .. – garine

Verwandte Themen