java - Cannot use Components/Service/Repository in Controller class -


i have configurated dao layer(i've created test check it), , integrate project spring mvc.

i've added configuration:

@configuration @enablewebmvc @componentscan(basepackages = "com.szymon.controller") public class webmvcconfig {         @bean         public viewresolver viewresolver() {             internalresourceviewresolver viewresolver = new internalresourceviewresolver();             viewresolver.setviewclass(jstlview.class);             viewresolver.setprefix("/web-inf/views/");             viewresolver.setsuffix(".jsp");              return viewresolver;         }     }  public class webinitializer implements webapplicationinitializer {      public void onstartup(servletcontext container) throws servletexception {          annotationconfigwebapplicationcontext ctx = new annotationconfigwebapplicationcontext();         ctx.register(webmvcconfig.class);         ctx.setservletcontext(container);          servletregistration.dynamic servlet = container.addservlet("dispatcher", new dispatcherservlet(ctx));          servlet.setloadonstartup(1);         servlet.addmapping("/");     }  } 

and controller looks like:

@controller public class helloworldcontroller {      @autowired     private meetingrepository meetingrepository;       @requestmapping("/hello")     public string helloworld(model model) { model.addattribute("message", "message");     model.addattribute("meeting", meetingrepository.findone(1l));     return "helloworld"; }  @requestmapping("/hel") public string hel(model model) {     model.addattribute("message", "message");     return "helloworld2"; } 

}

after commenting meetingrepository field , helloworld() method servlet works fine. if not commented doesn't working:

javax.servlet.servletexception: servlet.init() servlet dispatcher threw exception     org.apache.catalina.authenticator.authenticatorbase.invoke(authenticatorbase.java:502)     org.apache.catalina.valves.errorreportvalve.invoke(errorreportvalve.java:79)     org.apache.catalina.valves.abstractaccesslogvalve.invoke(abstractaccesslogvalve.java:616)     org.apache.catalina.connector.coyoteadapter.service(coyoteadapter.java:521)     org.apache.coyote.http11.abstracthttp11processor.process(abstracthttp11processor.java:1096)     org.apache.coyote.abstractprotocol$abstractconnectionhandler.process(abstractprotocol.java:674)     org.apache.tomcat.util.net.aprendpoint$socketprocessor.dorun(aprendpoint.java:2500)     org.apache.tomcat.util.net.aprendpoint$socketprocessor.run(aprendpoint.java:2489)     java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1142)     java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:617)     org.apache.tomcat.util.threads.taskthread$wrappingrunnable.run(taskthread.java:61)     java.lang.thread.run(thread.java:745) root cause  org.springframework.beans.factory.beancreationexception: error creating bean name 'helloworldcontroller': injection of autowired dependencies failed; nested exception org.springframework.beans.factory.beancreationexception: not autowire field: private com.szymon.repository.meetingrepository com.szymon.controller.helloworldcontroller.meetingrepository; nested exception org.springframework.beans.factory.nosuchbeandefinitionexception: no qualifying bean of type [com.szymon.repository.meetingrepository] found dependency: expected @ least 1 bean qualifies autowire candidate dependency. dependency annotations: {@org.springframework.beans.factory.annotation.autowired(required=true)}     org.springframework.beans.factory.annotation.autowiredannotationbeanpostprocessor.postprocesspropertyvalues(autowiredannotationbeanpostprocessor.java:334)     org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.populatebean(abstractautowirecapablebeanfactory.java:1208)     org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.docreatebean(abstractautowirecapablebeanfactory.java:537)     org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.createbean(abstractautowirecapablebeanfactory.java:476)     org.springframework.beans.factory.support.abstractbeanfactory$1.getobject(abstractbeanfactory.java:303)     org.springframework.beans.factory.support.defaultsingletonbeanregistry.getsingleton(defaultsingletonbeanregistry.java:230)     org.springframework.beans.factory.support.abstractbeanfactory.dogetbean(abstractbeanfactory.java:299)     org.springframework.beans.factory.support.abstractbeanfactory.getbean(abstractbeanfactory.java:194)     org.springframework.beans.factory.support.defaultlistablebeanfactory.preinstantiatesingletons(defaultlistablebeanfactory.java:755)     org.springframework.context.support.abstractapplicationcontext.finishbeanfactoryinitialization(abstractapplicationcontext.java:762)     org.springframework.context.support.abstractapplicationcontext.refresh(abstractapplicationcontext.java:480)     org.springframework.web.servlet.frameworkservlet.configureandrefreshwebapplicationcontext(frameworkservlet.java:664)     org.springframework.web.servlet.frameworkservlet.initwebapplicationcontext(frameworkservlet.java:536)     org.springframework.web.servlet.frameworkservlet.initservletbean(frameworkservlet.java:490)     org.springframework.web.servlet.httpservletbean.init(httpservletbean.java:136)     javax.servlet.genericservlet.init(genericservlet.java:158)     org.apache.catalina.authenticator.authenticatorbase.invoke(authenticatorbase.java:502)     org.apache.catalina.valves.errorreportvalve.invoke(errorreportvalve.java:79)     org.apache.catalina.valves.abstractaccesslogvalve.invoke(abstractaccesslogvalve.java:616)     org.apache.catalina.connector.coyoteadapter.service(coyoteadapter.java:521)     org.apache.coyote.http11.abstracthttp11processor.process(abstracthttp11processor.java:1096)     org.apache.coyote.abstractprotocol$abstractconnectionhandler.process(abstractprotocol.java:674)     org.apache.tomcat.util.net.aprendpoint$socketprocessor.dorun(aprendpoint.java:2500)     org.apache.tomcat.util.net.aprendpoint$socketprocessor.run(aprendpoint.java:2489)     java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1142)     java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:617)     org.apache.tomcat.util.threads.taskthread$wrappingrunnable.run(taskthread.java:61)     java.lang.thread.run(thread.java:745) root cause  org.springframework.beans.factory.beancreationexception: not autowire field: private com.szymon.repository.meetingrepository com.szymon.controller.helloworldcontroller.meetingrepository; nested exception org.springframework.beans.factory.nosuchbeandefinitionexception: no qualifying bean of type [com.szymon.repository.meetingrepository] found dependency: expected @ least 1 bean qualifies autowire candidate dependency. dependency annotations: {@org.springframework.beans.factory.annotation.autowired(required=true)}     org.springframework.beans.factory.annotation.autowiredannotationbeanpostprocessor$autowiredfieldelement.inject(autowiredannotationbeanpostprocessor.java:561)     org.springframework.beans.factory.annotation.injectionmetadata.inject(injectionmetadata.java:88)     org.springframework.beans.factory.annotation.autowiredannotationbeanpostprocessor.postprocesspropertyvalues(autowiredannotationbeanpostprocessor.java:331)     org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.populatebean(abstractautowirecapablebeanfactory.java:1208)     org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.docreatebean(abstractautowirecapablebeanfactory.java:537)     org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.createbean(abstractautowirecapablebeanfactory.java:476)     org.springframework.beans.factory.support.abstractbeanfactory$1.getobject(abstractbeanfactory.java:303)     org.springframework.beans.factory.support.defaultsingletonbeanregistry.getsingleton(defaultsingletonbeanregistry.java:230)     org.springframework.beans.factory.support.abstractbeanfactory.dogetbean(abstractbeanfactory.java:299)     org.springframework.beans.factory.support.abstractbeanfactory.getbean(abstractbeanfactory.java:194)     org.springframework.beans.factory.support.defaultlistablebeanfactory.preinstantiatesingletons(defaultlistablebeanfactory.java:755)     org.springframework.context.support.abstractapplicationcontext.finishbeanfactoryinitialization(abstractapplicationcontext.java:762)     org.springframework.context.support.abstractapplicationcontext.refresh(abstractapplicationcontext.java:480)     org.springframework.web.servlet.frameworkservlet.configureandrefreshwebapplicationcontext(frameworkservlet.java:664)     org.springframework.web.servlet.frameworkservlet.initwebapplicationcontext(frameworkservlet.java:536)     org.springframework.web.servlet.frameworkservlet.initservletbean(frameworkservlet.java:490)     org.springframework.web.servlet.httpservletbean.init(httpservletbean.java:136)     javax.servlet.genericservlet.init(genericservlet.java:158)     org.apache.catalina.authenticator.authenticatorbase.invoke(authenticatorbase.java:502)     org.apache.catalina.valves.errorreportvalve.invoke(errorreportvalve.java:79)     org.apache.catalina.valves.abstractaccesslogvalve.invoke(abstractaccesslogvalve.java:616)     org.apache.catalina.connector.coyoteadapter.service(coyoteadapter.java:521)     org.apache.coyote.http11.abstracthttp11processor.process(abstracthttp11processor.java:1096)     org.apache.coyote.abstractprotocol$abstractconnectionhandler.process(abstractprotocol.java:674)     org.apache.tomcat.util.net.aprendpoint$socketprocessor.dorun(aprendpoint.java:2500)     org.apache.tomcat.util.net.aprendpoint$socketprocessor.run(aprendpoint.java:2489)     java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1142)     java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:617)     org.apache.tomcat.util.threads.taskthread$wrappingrunnable.run(taskthread.java:61)     java.lang.thread.run(thread.java:745) root cause  org.springframework.beans.factory.nosuchbeandefinitionexception: no qualifying bean of type [com.szymon.repository.meetingrepository] found dependency: expected @ least 1 bean qualifies autowire candidate dependency. dependency annotations: {@org.springframework.beans.factory.annotation.autowired(required=true)}     org.springframework.beans.factory.support.defaultlistablebeanfactory.raisenosuchbeandefinitionexception(defaultlistablebeanfactory.java:1301)     org.springframework.beans.factory.support.defaultlistablebeanfactory.doresolvedependency(defaultlistablebeanfactory.java:1047)     org.springframework.beans.factory.support.defaultlistablebeanfactory.resolvedependency(defaultlistablebeanfactory.java:942)     org.springframework.beans.factory.annotation.autowiredannotationbeanpostprocessor$autowiredfieldelement.inject(autowiredannotationbeanpostprocessor.java:533)     org.springframework.beans.factory.annotation.injectionmetadata.inject(injectionmetadata.java:88)     org.springframework.beans.factory.annotation.autowiredannotationbeanpostprocessor.postprocesspropertyvalues(autowiredannotationbeanpostprocessor.java:331)     org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.populatebean(abstractautowirecapablebeanfactory.java:1208)     org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.docreatebean(abstractautowirecapablebeanfactory.java:537)     org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.createbean(abstractautowirecapablebeanfactory.java:476)     org.springframework.beans.factory.support.abstractbeanfactory$1.getobject(abstractbeanfactory.java:303)     org.springframework.beans.factory.support.defaultsingletonbeanregistry.getsingleton(defaultsingletonbeanregistry.java:230)     org.springframework.beans.factory.support.abstractbeanfactory.dogetbean(abstractbeanfactory.java:299)     org.springframework.beans.factory.support.abstractbeanfactory.getbean(abstractbeanfactory.java:194)     org.springframework.beans.factory.support.defaultlistablebeanfactory.preinstantiatesingletons(defaultlistablebeanfactory.java:755)     org.springframework.context.support.abstractapplicationcontext.finishbeanfactoryinitialization(abstractapplicationcontext.java:762)     org.springframework.context.support.abstractapplicationcontext.refresh(abstractapplicationcontext.java:480)     org.springframework.web.servlet.frameworkservlet.configureandrefreshwebapplicationcontext(frameworkservlet.java:664)     org.springframework.web.servlet.frameworkservlet.initwebapplicationcontext(frameworkservlet.java:536)     org.springframework.web.servlet.frameworkservlet.initservletbean(frameworkservlet.java:490)     org.springframework.web.servlet.httpservletbean.init(httpservletbean.java:136)     javax.servlet.genericservlet.init(genericservlet.java:158)     org.apache.catalina.authenticator.authenticatorbase.invoke(authenticatorbase.java:502)     org.apache.catalina.valves.errorreportvalve.invoke(errorreportvalve.java:79)     org.apache.catalina.valves.abstractaccesslogvalve.invoke(abstractaccesslogvalve.java:616)     org.apache.catalina.connector.coyoteadapter.service(coyoteadapter.java:521)     org.apache.coyote.http11.abstracthttp11processor.process(abstracthttp11processor.java:1096)     org.apache.coyote.abstractprotocol$abstractconnectionhandler.process(abstractprotocol.java:674)     org.apache.tomcat.util.net.aprendpoint$socketprocessor.dorun(aprendpoint.java:2500)     org.apache.tomcat.util.net.aprendpoint$socketprocessor.run(aprendpoint.java:2489)     java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1142)     java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:617)     org.apache.tomcat.util.threads.taskthread$wrappingrunnable.run(taskthread.java:61)     java.lang.thread.run(thread.java:745) 

it looks, spring not making beans when using spring mvc. how should configure application working properly?

edit meetingrepository class:

public interface meetingrepository extends jparepository<meeting, long> { }  @configuration @enablejparepositories(basepackages = "com.szymon.repository") @enabletransactionmanagement public class dataaccessconfig {      @bean     public localentitymanagerfactorybean entitymanagerfactory() {         localentitymanagerfactorybean localentitymanagerfactorybean = new localentitymanagerfactorybean();         localentitymanagerfactorybean.setpersistenceunitname("postgres");         return localentitymanagerfactorybean;     }      @bean     public jpatransactionmanager transactionmanager(entitymanagerfactory entitymanagerfactory) {         jpatransactionmanager jpatransactionmanager = new jpatransactionmanager();         jpatransactionmanager.setentitymanagerfactory(entitymanagerfactory);         return jpatransactionmanager;     } } 

it's working well, because i've tested it:

@runwith(springjunit4classrunner.class) @contextconfiguration(classes = dataaccessconfig.class) public class meetingrepositorytest {      @autowired     private meetingrepository meetingrepository;      @test     public void test() {         meeting meeting = new meeting();         meeting.setaddeddate(new date());         meeting.setmeetingdate(new date(system.currenttimemillis() + 604800000));         meeting.setnotes("moje pierwsze spotkanie.");         meeting.setplace("pokoj 200");          meetingrepository.save(meeting);         assert.asserttrue(true);     }   } 

try placing @enabletransactionmanagement , @enablejparepositories(basepackages=...) on webmvcconfig.java class , place @repository on meetingrepository class.

although dataaccessconfig class marked @configuration not being referenced in webinitializer class. webinitializer class referencing webmvcconfig , considered.

if want can specify dataaccessconfig along webmvcconfig using ctx.register(webmvcconfig.class, dataaccessconfig.class);. should work well.


Comments

Popular posts from this blog

java - Run spring boot application error: Cannot instantiate interface org.springframework.context.ApplicationListener -

reactjs - React router and this.props.children - how to pass state to this.props.children -

Excel VBA "Microsoft Windows Common Controls 6.0 (SP6)" Location Changes -