model view controller - Spring Autowire error expected at least 1 bean which qualifies as autowire candidate for this dependency -


i trying autowire beans in project keep getting error

expected @ least 1 bean qualifies autowire candidate dependency. dependency annotations: {@org.springframework.beans.factory.annotation.autowired(required=true)"

java:

@controller @requestmapping(value="/home") public class homecontroller {  @autowired private personrepo personrepo;  @requestmapping(method=requestmethod.get) public string showform(modelmap model){     list<person> persons = personrepo.getall();     model.addattribute("persons", persons);     person person = new person();     model.addattribute("person", person);     return "home"; }   @requestmapping(value="/add", method=requestmethod.post) public modelandview add(@modelattribute(value="person") person person,bindingresult result){      modelandview mv = new modelandview("home");     if(!result.haserrors()){         personrepo.add(person);         person = new person();         mv.addobject("person", person);     }     mv.addobject("persons", personrepo.getall());     return mv; }   @requestmapping(value="/edit", method=requestmethod.post) public modelandview edit(@modelattribute(value="person") person person,bindingresult result){      modelandview mv = new modelandview("home");     if(!result.haserrors()){         personrepo.edit(person);         person = new person();          mv.addobject("person", person);     }     mv.addobject("persons", personrepo.getall());     return mv; } @requestmapping(value="/delete", method=requestmethod.post) public modelandview update(@modelattribute(value="person") person person,bindingresult result){     modelandview mv = new modelandview("home");     if(!result.haserrors()){     personrepo.delete(person.getid());          //personrepo.delete(person);         person = new person();          mv.addobject("person", person);     }     mv.addobject("persons", personrepo.getall());     return mv; }   } 

person

package com.app.domain;  import java.io.serializable;  /** * simple pojo representing person */  public class person implements serializable {  private static final long serialversionuid = -5527566248002296042l;  private string id; private string firstname; private string lastname; private double money;  public string getid() {     return id; }  public void setid(string id) {     this.id = id; }  public string getfirstname() {     return firstname; }  public void setfirstname(string firstname) {     this.firstname = firstname; }  public string getlastname() {     return lastname; }  public void setlastname(string lastname) {     this.lastname = lastname; }  public double getmoney() {     return money; }  public void setmoney(double money) {     this.money = money; }  } 

personrepo

package com.app.r;  import java.util.list; import org.springframework.beans.factory.annotation.autowired; import org.springframework.stereotype.service;  import com.app.service.personservice; import com.app.domain.person;   public interface personrepo {  public void add(person person); public void edit(person person); public void delete(string id); public list<person> getall(); } 

personservice

 package com.app.service;   import java.sql.resultset;   import java.sql.sqlexception; import java.util.hashmap; import java.util.list; import java.util.map;  import javax.annotation.resource; import javax.sql.datasource;  import org.apache.log4j.logger; import com.app.domain.person;   import org.springframework.jdbc.core.rowmapper; import org.springframework.jdbc.core.jdbctemplate; import org.springframework.stereotype.component; import org.springframework.stereotype.service; import org.springframework.transaction.annotation.transactional;    @component @transactional public class personservice {  protected static logger logger = logger.getlogger("service");  private jdbctemplate jdbctemplate;  @resource(name="datasource") public void setdatasource(datasource datasource) {     this.jdbctemplate = new jdbctemplate(datasource); }  /**  * retrieves persons  *   * @return list of persons  */ public list<person> getall() {     logger.debug("retrieving persons");      // prepare our sql statement     string sql = "select id, first_name, last_name, money person";      // maps sql result java object     rowmapper<person> mapper = new rowmapper<person>() {           public person maprow(resultset rs, int rownum) throws sqlexception {             person person = new person();             person.setid(rs.getstring("id"));             person.setfirstname(rs.getstring("first_name"));             person.setlastname(rs.getstring("last_name"));             person.setmoney(rs.getdouble("money"));             return person;         }     };      // retrieve     return jdbctemplate.query(sql, mapper); }  /**  * adds new person  *   * @param firstname first name of person  * @param lastname last name of person  * @param money money of person  */ public void add(string firstname, string lastname, double money) {     logger.debug("adding new person");      // prepare our sql statement using named parameters style     string sql = "insert person(first_name, last_name, money) values " +             "(:firstname, :lastname, :money)";      // assign values parameters     map<string, object> parameters = new hashmap<string, object>();     parameters.put("firstname", firstname);     parameters.put("lastname", lastname);     parameters.put("money", money);      // save     jdbctemplate.update(sql, parameters); }      /**  * deletes existing person  * @param id id of existing person  */ public void delete(string id) {     logger.debug("deleting existing person");      // prepare our sql statement using unnamed parameters style     string sql = "delete person id = ?";      // assign values parameters     object[] parameters = new object[] {id};      // delete     jdbctemplate.update(sql, parameters); }  /**  * edits existing person  * @param id id of existing person  * @param firstname first name of existing person  * @param lastname last name of existing person  * @param money money of existing person  */ public void edit(string id, string firstname, string lastname, double money) {     logger.debug("editing existing person");      // prepare our sql statement     string sql = "update person set first_name = :firstname, " +             "last_name = :lastname, money = :money id = :id";      // assign values parameters     map<string, object> parameters = new hashmap<string, object>();     parameters.put("id", id);     parameters.put("firstname", firstname);     parameters.put("lastname", lastname);     parameters.put("money", money);      // edit     jdbctemplate.update(sql, parameters);  }  } 

servlet-context.xml

               <?xml version="1.0" encoding="utf-8"?> <beans:beans xmlns="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns:beans="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xsi:schemalocation="http://www.springframework.org/schema/mvc     http://www.springframework.org/schema/mvc/spring-mvc.xsd     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">     <!-- dispatcherservlet context: defines servlet's request-processing infrastructure -->      <!-- enables spring mvc @controller programming model --> <annotation-driven />   <!-- resolves views selected rendering @controllers .jsp resources in /web-     inf/views directory --> <beans:bean class="org.springframework.web.servlet.view.internalresourceviewresolver">     <beans:property name="prefix" value="/web-inf/views/" />     <beans:property name="suffix" value=".jsp" /> </beans:bean>  <!-- activates various annotations detected in bean classes --> <context:annotation-config />     <!-- scans classpath annotated components auto-registered spring beans.  example @controller , @service. make sure set correct base-package-->      </beans:beans> 

web.xml

                   <?xml version="1.0" encoding="utf-8"?>    <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-  app_2_5.xsd">    <!-- creates spring container shared servlets , filters -->   <!-- processes application requests --> <servlet>     <servlet-name>servlet</servlet-name>     <servlet-class>org.springframework.web.servlet.dispatcherservlet</servlet-class>     <init-param>         <param-name>contextconfiglocation</param-name>         <param-value>/web-inf/servlet-context.xml</param-value>     </init-param>     <load-on-startup>1</load-on-startup> </servlet> 

org.springframework.web.context.contextloaderlistener

<servlet-mapping>     <servlet-name>servlet</servlet-name>     <url-pattern>/*</url-pattern> </servlet-mapping> 

error console

info : org.springframework.web.servlet.dispatcherservlet - frameworkservlet 'servlet': initialization started info : org.springframework.web.context.support.xmlwebapplicationcontext - refreshing webapplicationcontext namespace 'servlet-servlet': startup date [wed may 08 15:59:09 bst 2013]; root of context hierarchy info : org.springframework.beans.factory.xml.xmlbeandefinitionreader - loading xml bean definitions servletcontext resource [/web-inf/servlet-context.xml] info : org.springframework.context.annotation.classpathbeandefinitionscanner - jsr-330 'javax.inject.named' annotation found , supported component scanning info : org.springframework.context.annotation.classpathbeandefinitionscanner - jsr-330 'javax.inject.named' annotation found , supported component scanning info : org.springframework.context.annotation.classpathbeandefinitionscanner - jsr-330 'javax.inject.named' annotation found , supported component scanning info : org.springframework.beans.factory.annotation.autowiredannotationbeanpostprocessor - jsr-330 'javax.inject.inject' annotation found , supported autowiring info : org.springframework.beans.factory.support.defaultlistablebeanfactory - pre-instantiating singletons in org.springframework.beans.factory.support.defaultlistablebeanfactory@426b51d8: defining beans [org.springframework.web.servlet.mvc.method.annotation.requestmappinghandlermapping#0,org.springframework.format.support.formattingconversionservicefactorybean#0,org.springframework.web.servlet.mvc.method.annotation.requestmappinghandleradapter#0,org.springframework.web.servlet.handler.mappedinterceptor#0,org.springframework.web.servlet.mvc.method.annotation.exceptionhandlerexceptionresolver#0,org.springframework.web.servlet.mvc.annotation.responsestatusexceptionresolver#0,org.springframework.web.servlet.mvc.support.defaulthandlerexceptionresolver#0,org.springframework.web.servlet.handler.beannameurlhandlermapping,org.springframework.web.servlet.mvc.httprequesthandleradapter,org.springframework.web.servlet.mvc.simplecontrollerhandleradapter,org.springframework.web.servlet.view.internalresourceviewresolver#0,org.springframework.context.annotation.internalconfigurationannotationprocessor,org.springframework.context.annotation.internalautowiredannotationprocessor,org.springframework.context.annotation.internalrequiredannotationprocessor,org.springframework.context.annotation.internalcommonannotationprocessor,homecontroller,personservice,org.springframework.context.annotation.configurationclasspostprocessor$importawarebeanpostprocessor#0]; root of factory hierarchy info : org.springframework.web.servlet.mvc.method.annotation.requestmappinghandlermapping - mapped "{[/home/add],methods=[post],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public org.springframework.web.servlet.modelandview com.app.a.homecontroller.add(com.app.domain.person,org.springframework.validation.bindingresult) info : org.springframework.web.servlet.mvc.method.annotation.requestmappinghandlermapping - mapped "{[/home/delete],methods=[post],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public org.springframework.web.servlet.modelandview com.app.a.homecontroller.update(com.app.domain.person,org.springframework.validation.bindingresult) info : org.springframework.web.servlet.mvc.method.annotation.requestmappinghandlermapping - mapped "{[/home],methods=[get],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.string com.app.a.homecontroller.showform(org.springframework.ui.modelmap) info : org.springframework.web.servlet.mvc.method.annotation.requestmappinghandlermapping - mapped "{[/home/edit],methods=[post],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public org.springframework.web.servlet.modelandview com.app.a.homecontroller.edit(com.app.domain.person,org.springframework.validation.bindingresult) info : org.springframework.beans.factory.support.defaultlistablebeanfactory - destroying singletons in org.springframework.beans.factory.support.defaultlistablebeanfactory@426b51d8: defining beans [org.springframework.web.servlet.mvc.method.annotation.requestmappinghandlermapping#0,org.springframework.format.support.formattingconversionservicefactorybean#0,org.springframework.web.servlet.mvc.method.annotation.requestmappinghandleradapter#0,org.springframework.web.servlet.handler.mappedinterceptor#0,org.springframework.web.servlet.mvc.method.annotation.exceptionhandlerexceptionresolver#0,org.springframework.web.servlet.mvc.annotation.responsestatusexceptionresolver#0,org.springframework.web.servlet.mvc.support.defaulthandlerexceptionresolver#0,org.springframework.web.servlet.handler.beannameurlhandlermapping,org.springframework.web.servlet.mvc.httprequesthandleradapter,org.springframework.web.servlet.mvc.simplecontrollerhandleradapter,org.springframework.web.servlet.view.internalresourceviewresolver#0,org.springframework.context.annotation.internalconfigurationannotationprocessor,org.springframework.context.annotation.internalautowiredannotationprocessor,org.springframework.context.annotation.internalrequiredannotationprocessor,org.springframework.context.annotation.internalcommonannotationprocessor,homecontroller,personservice,org.springframework.context.annotation.configurationclasspostprocessor$importawarebeanpostprocessor#0]; root of factory hierarchy error: org.springframework.web.servlet.dispatcherservlet - context initialization failed org.springframework.beans.factory.beancreationexception: error creating bean name 'homecontroller': injection of autowired dependencies failed; nested exception org.springframework.beans.factory.beancreationexception: not autowire field: private com.app.r.personrepo com.app.a.homecontroller.personrepo; nested exception org.springframework.beans.factory.nosuchbeandefinitionexception: no matching bean of type [com.app.r.personrepo] 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:287)     @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.populatebean(abstractautowirecapablebeanfactory.java:1106)     @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.docreatebean(abstractautowirecapablebeanfactory.java:517)     @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.createbean(abstractautowirecapablebeanfactory.java:456)     @ org.springframework.beans.factory.support.abstractbeanfactory$1.getobject(abstractbeanfactory.java:294)     @ org.springframework.beans.factory.support.defaultsingletonbeanregistry.getsingleton(defaultsingletonbeanregistry.java:225)     @ org.springframework.beans.factory.support.abstractbeanfactory.dogetbean(abstractbeanfactory.java:291)     @ org.springframework.beans.factory.support.abstractbeanfactory.getbean(abstractbeanfactory.java:193)     @ org.springframework.beans.factory.support.defaultlistablebeanfactory.preinstantiatesingletons(defaultlistablebeanfactory.java:585)     @ org.springframework.context.support.abstractapplicationcontext.finishbeanfactoryinitialization(abstractapplicationcontext.java:913)     @ org.springframework.context.support.abstractapplicationcontext.refresh(abstractapplicationcontext.java:464)     @ org.springframework.web.servlet.frameworkservlet.configureandrefreshwebapplicationcontext(frameworkservlet.java:631)     @ org.springframework.web.servlet.frameworkservlet.createwebapplicationcontext(frameworkservlet.java:588)     @ org.springframework.web.servlet.frameworkservlet.createwebapplicationcontext(frameworkservlet.java:645)     @ org.springframework.web.servlet.frameworkservlet.initwebapplicationcontext(frameworkservlet.java:508)     @ org.springframework.web.servlet.frameworkservlet.initservletbean(frameworkservlet.java:449)     @ org.springframework.web.servlet.httpservletbean.init(httpservletbean.java:133)     @ javax.servlet.genericservlet.init(genericservlet.java:160)     @ org.apache.catalina.core.standardwrapper.initservlet(standardwrapper.java:1266)     @ org.apache.catalina.core.standardwrapper.loadservlet(standardwrapper.java:1185)     @ org.apache.catalina.core.standardwrapper.load(standardwrapper.java:1080)     @ org.apache.catalina.core.standardcontext.loadonstartup(standardcontext.java:5027)     @ org.apache.catalina.core.standardcontext.startinternal(standardcontext.java:5314)     @ org.apache.catalina.util.lifecyclebase.start(lifecyclebase.java:150)     @ org.apache.catalina.core.containerbase$startchild.call(containerbase.java:1559)     @ org.apache.catalina.core.containerbase$startchild.call(containerbase.java:1549)     @ java.util.concurrent.futuretask$sync.innerrun(futuretask.java:303)     @ java.util.concurrent.futuretask.run(futuretask.java:138)     @ java.util.concurrent.threadpoolexecutor$worker.runtask(threadpoolexecutor.java:886)     @ java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:908)     @ java.lang.thread.run(thread.java:662) caused by: org.springframework.beans.factory.beancreationexception: not autowire field: private com.app.r.personrepo com.app.a.homecontroller.personrepo; nested exception org.springframework.beans.factory.nosuchbeandefinitionexception: no matching bean of type [com.app.r.personrepo] 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:506)     @ org.springframework.beans.factory.annotation.injectionmetadata.inject(injectionmetadata.java:87)     @ org.springframework.beans.factory.annotation.autowiredannotationbeanpostprocessor.postprocesspropertyvalues(autowiredannotationbeanpostprocessor.java:284)     ... 30 more caused by: org.springframework.beans.factory.nosuchbeandefinitionexception: no matching bean of type [com.app.r.personrepo] 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:924)     @ org.springframework.beans.factory.support.defaultlistablebeanfactory.doresolvedependency(defaultlistablebeanfactory.java:793)     @ org.springframework.beans.factory.support.defaultlistablebeanfactory.resolvedependency(defaultlistablebeanfactory.java:707)     @ org.springframework.beans.factory.annotation.autowiredannotationbeanpostprocessor$autowiredfieldelement.inject(autowiredannotationbeanpostprocessor.java:478)     ... 32 more may 8, 2013 3:59:10 pm org.apache.catalina.core.applicationcontext log severe: standardwrapper.throwable org.springframework.beans.factory.beancreationexception: error creating bean name 'homecontroller': injection of autowired dependencies failed; nested exception org.springframework.beans.factory.beancreationexception: not autowire field: private com.app.r.personrepo com.app.a.homecontroller.personrepo; nested exception org.springframework.beans.factory.nosuchbeandefinitionexception: no matching bean of type [com.app.r.personrepo] found dependency: expected @ least 1 bean qualifies autowire candidate dependency. dependency annotations: {@org.springframework.beans.factory.annotation.autowired(required=true)} 

personservice class update implementation

package com.app.service;  @component public class personservice implements personrepo {  protected static logger logger = logger.getlogger("service");  private jdbctemplate jdbctemplate;  @resource(name="datasource") public void setdatasource(datasource datasource) {     this.jdbctemplate = new jdbctemplate(datasource); }  /**  * retrieves persons  *   * @return list of persons  */ public list<person> getall() {     logger.debug("retrieving persons");        // prepare our sql statement     string sql = "select id, first_name, last_name, money person";        // maps sql result java object     rowmapper<person> mapper = new rowmapper<person>() {           public person maprow(resultset rs, int rownum) throws sqlexception {             person person = new person();             person.setid(rs.getstring("id"));             person.setfirstname(rs.getstring("first_name"));             person.setlastname(rs.getstring("last_name"));             person.setmoney(rs.getdouble("money"));             return person;         }     };      // retrieve     return jdbctemplate.query(sql, mapper); }  /**  * adds new person  *   * @param firstname first name of person  * @param lastname last name of person  * @param money money of person  */ public void add(string firstname, string lastname, double money) {     logger.debug("adding new person");      // prepare our sql statement using named parameters style     string sql = "insert person(first_name, last_name, money) values " +             "(:firstname, :lastname, :money)";      // assign values parameters     map<string, object> parameters = new hashmap<string, object>();     parameters.put("firstname", firstname);     parameters.put("lastname", lastname);     parameters.put("money", money);      // save     jdbctemplate.update(sql, parameters); }      /**  * deletes existing person  * @param id id of existing person  */ public void delete(string id) {     logger.debug("deleting existing person");      // prepare our sql statement using unnamed parameters style     string sql = "delete person id = ?";      // assign values parameters     object[] parameters = new object[] {id};      // delete     jdbctemplate.update(sql, parameters); }  /**  * edits existing person  * @param id id of existing person  * @param firstname first name of existing person  * @param lastname last name of existing person  * @param money money of existing person  */ public void edit(string id, string firstname, string lastname, double money) {     logger.debug("editing existing person");      // prepare our sql statement     string sql = "update person set first_name = :firstname, " +             "last_name = :lastname, money = :money id = :id";      // assign values parameters     map<string, object> parameters = new hashmap<string, object>();     parameters.put("id", id);     parameters.put("firstname", firstname);     parameters.put("lastname", lastname);     parameters.put("money", money);      // edit     jdbctemplate.update(sql, parameters);  }    @override public void add(person person) {     // todo auto-generated method stub  }  @override public void edit(person person) {     // todo auto-generated method stub  }      } 

i have added this

appilcation context.xml                  <?xml version="1.0" encoding="utf-8"?>     <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"  xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemalocation="http://www.springframework.org/schema/beans          http://www.springframework.org/schema/beans/spring-beans-3.0.xsd         http://www.springframework.org/schema/context         http://www.springframework.org/schema/context/spring-context-3.0.xsd         http://www.springframework.org/schema/mvc          http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">  <!-- activates various annotations detected in bean classes --> <context:annotation-config />  <!-- scans classpath annotated components auto-registered spring beans.  example @controller , @service. make sure set correct base-package-->   <context:component-scan base-package="com.app.a" />    <!-- configures annotation-driven spring mvc controller programming model. note that, spring 3.0, tag works in servlet mvc only!  --> <mvc:annotation-driven />   <import resource="jdbc-context.xml" /> 

now not getting datasource bean error error not find autowire bean. when tried add com.app.service.personservice com.app.r.personrepo. in application context.xml

it gives me http not found error uri

spent of time this! bad! later found class on declared annotation service or component of type abstract. had enabled debug logs on springframework no hint received. please check if class if of abstract type. if then, basic rule applied, can't instantiate abstract class.


Comments

Popular posts from this blog

java - Jmockit String final length method mocking Issue -

asp.net - Razor Page Hosted on IIS 6 Fails Every Morning -

c++ - wxwidget compiling on windows command prompt -