java - Spring+Hibernate. Error creating bean. Unsatisfied dependency. Cannot figure out what annotation is not right -


i've gone through every post on topic still can't find what's wrong. when try run server exception:

org.springframework.beans.factory.unsatisfieddependencyexception: error creating bean name 'administratordao': unsatisfied dependency expressed through method 'setdao' parameter 0: no qualifying bean of type [com.project.dataaccesslayer.dataaccessobject] found dependency [com.project.dataaccesslayer.dataaccessobject]: expected @ least 1 bean qualifies autowire candidate dependency. dependency annotations: {}; nested exception org.springframework.beans.factory.nosuchbeandefinitionexception: no qualifying bean of type [com.project.dataaccesslayer.dataaccessobject] found dependency [com.project.dataaccesslayer.dataaccessobject]: expected @ least 1 bean qualifies autowire candidate dependency. dependency annotations: {}

it says have no bean dataaccessobject if it's annotated @repository or defined in servlet-context.xml

i have customerdao , administratordao extends customerdao. i'll post customer part think if can make work, administrator part follow.

dataaccessobject class  package com.project.dataaccesslayer;  import java.util.list;   import org.hibernate.session; import org.hibernate.sessionfactory; import org.hibernate.criterion.restrictions; import org.springframework.beans.factory.annotation.autowired; import org.springframework.beans.factory.annotation.qualifier; import org.springframework.stereotype.repository;  import com.project.model.account; import com.project.model.modelentity; import com.project.model.product;   @repository("dao") public class dataaccessobject {       private sessionfactory sessionfactory;     private session session;      @autowired     @qualifier("sessionfactory")     public void setsessionfactory(sessionfactory sessionfactory) {         this.sessionfactory = sessionfactory;     }      public modelentity save(modelentity modelentity) {         integer id = null;         try {             session = sessionfactory.opensession();             session.begintransaction();             id = (integer) session.save(modelentity);             if (id != null) {                 modelentity.setid(id);             }             session.gettransaction().commit();             session.close();          } catch (exception e) {             this.update(modelentity);         }          return modelentity;      }       public void update(modelentity modelentity) {         try {              session = sessionfactory.opensession();             session.begintransaction();              session.update(modelentity);              session.gettransaction().commit();         } catch (exception e) {             e.printstacktrace();         } {             session.close();         }      }      @suppresswarnings("unchecked")     public list<product> getproducts() {         list<product> list = null;          try {             session = sessionfactory.opensession();             session.begintransaction();              list = session.createcriteria(product.class).list();              session.gettransaction().commit();          } catch (exception e) {             e.printstacktrace();         } {             session.close();         }          return list;     }      @suppresswarnings("unchecked")     public list<account> getaccounts() {         list<account> list = null;          try {             session = sessionfactory.opensession();             session.begintransaction();              list = session.createcriteria(account.class).list();              session.gettransaction().commit();          } catch (exception e) {             e.printstacktrace();         } {             session.close();         }          return list;     }      @suppresswarnings("unchecked")     public list<product> getproductbyname(string brand, string model) {         list<product> list = null;          try {             session = sessionfactory.opensession();             session.begintransaction();              list = session.createcriteria(product.class).add(restrictions.eq("brand", brand))                     .add(restrictions.eq("model", model)).list();              session.gettransaction().commit();          } catch (exception e) {             e.printstacktrace();         } {             session.close();         }          return list;     }      @suppresswarnings("unchecked")     public list<account> getaccountbyusername(string username) {         list<account> list = null;          try {             session = sessionfactory.opensession();             session.begintransaction();              list = session.createcriteria(account.class).add(restrictions.eq("username", username)).list();              session.gettransaction().commit();          } catch (exception e) {             e.printstacktrace();         } {             session.close();         }          return list;     }      public void delete(modelentity modelentity) {         try {              session = sessionfactory.opensession();             session.begintransaction();              session.delete(modelentity);              session.gettransaction().commit();             session.clear();         } catch (exception e) {             e.printstacktrace();         } {             session.close();         }     }       public sessionfactory getsessionfactory() {         return sessionfactory;     }   } 

customerdao class

package com.project.dataaccesslayer;  import java.util.list;  import org.springframework.beans.factory.annotation.autowired; import org.springframework.beans.factory.annotation.qualifier; import org.springframework.stereotype.repository;  import com.project.model.account; import com.project.model.permission; import com.project.model.product;   @repository("customerdao") public class customerdao implements icustomerdao {       dataaccessobject dao;      @autowired     @qualifier("custdao")     public void setdao(dataaccessobject dao) {         this.dao = dao;     }      public dataaccessobject getdao() {         return dao;     }       public account signup(string fullname, string username, string password, string email, string address,             permission permission) throws exception {          list<account> allaccounts = dao.getaccounts();         (account : allaccounts) {             if (it.getusername().equals(username)) {                 throw new exception("the username exists");             }         }         account newaccount = new account(fullname, username, password, email, address, permission);         account savedaccount = (account) dao.save(newaccount);         return savedaccount;     }       public int login(string username, string password) throws exception {          list<account> allaccounts = dao.getaccounts();         (account : allaccounts) {             if (it.getusername().equals(username)) {                 {                     if (it.getpassword().equals(password)) {                         if (it.isonline() == false) {                             it.setonline(true);                             dao.update(it);                             return 200;                         } else {                             throw new exception("you logged in");                         }                     } else {                         throw new exception("invalid password");                     }                 }             }         }         // username not found in database         return 404;     }      public int logout(int accountid) throws exception {         list<account> allaccounts = dao.getaccounts();         (account : allaccounts) {             if (it.getid() == accountid) {                 {                     if (it.isonline()) {                         it.setonline(false);                         dao.update(it);                         return 200;                     } else {                         throw new exception("you not logged in");                     }                 }             }         }          return 400;     }       public account changepassword(string username, string oldpassword, string newpassword) throws exception {         list<account> allaccounts = dao.getaccounts();         (account : allaccounts) {             if (it.getusername().equals(username)) {                 {                     if (it.getpassword().equals(oldpassword)) {                         if (it.isonline()) {                             it.setpassword(newpassword);                             dao.update(it);                             return it;                         } else {                             throw new exception("you must logged in in order change password");                         }                     } else {                         throw new exception("invalid password");                     }                 }             }         }         return null;     }       public list<product> showallproducts() {         return dao.getproducts();     }       public list<product> getproductbyname(string brand, string model) {         return dao.getproductbyname(brand, model);     }   } 

customerservice class

package com.project.services;  import java.util.list;  import org.springframework.beans.factory.annotation.autowired; import org.springframework.stereotype.service; import org.springframework.transaction.annotation.transactional;  import com.project.dataaccesslayer.customerdao; import com.project.model.account; import com.project.model.permission; import com.project.model.product;  @service("customerservice") @transactional public class customerservice implements icustomerservice {       private customerdao cdao;      public customerdao getcdao() {         return cdao;     }      @autowired     public void setcdao(customerdao cdao) {         this.cdao = cdao;     }      @transactional     public account signup(string fullname, string username, string password, string email, string address,             permission permission) throws exception {          if (username.equals("") || password.length() < 3 || permission == null) {              throw new exception("you must provide username , minimum 3 character long password");         } else {             return cdao.signup(fullname, username, password, email, address, permission);         }      }      @transactional     public boolean login(string username, string password) throws exception {          if (cdao.login(username, password) == 200)             return true;          return false;     }      @transactional     public boolean logout(int accountid) throws exception {          if (cdao.logout(accountid) == 200)             return true;         return false;     }      @transactional     public account changepassword(string username, string oldpassword, string newpassword) throws exception {          if (newpassword.length() < 3) {             throw new exception("password must have minimum 3 characters");         }          return cdao.changepassword(username, oldpassword, newpassword);     }      @transactional     public list<product> showallproducts() {         return cdao.showallproducts();     }      @transactional     public product getproductbyname(string brand, string model) throws exception {          list<product> plist = cdao.getproductbyname(brand, model);         if (plist.isempty()) {             throw new exception(brand + " " + model + " not exist");         } else {             return plist.get(0);         }     }  } 

customercontroller class

package com.project.controller;  import java.util.list;  import org.springframework.beans.factory.annotation.autowired; import org.springframework.beans.factory.annotation.qualifier; import org.springframework.stereotype.controller; import org.springframework.web.bind.annotation.modelattribute; import org.springframework.web.bind.annotation.pathvariable; import org.springframework.web.bind.annotation.requestmapping; import org.springframework.web.bind.annotation.requestmethod; import org.springframework.web.servlet.modelandview;  import com.project.model.account; import com.project.model.product; import com.project.services.customerservice; import com.project.services.icustomerservice;  @controller("customercontroller") @requestmapping("/") public class customercontroller {      icustomerservice customerservice;      @autowired(required = true)     @qualifier(value="customerservice")     public void setcustomerservice(customerservice cs){         this.customerservice = cs;     }      @requestmapping(value = "/account", method = requestmethod.get)     public modelandview showform() {         return new modelandview("account", "account", new account());     }      @requestmapping(value = "/signup", method = requestmethod.post)     public string signup(@modelattribute("account") account acc) throws exception {          this.customerservice.signup(acc.getfullname(), acc.getusername(), acc.getpassword(), acc.getemail(),                 acc.getaddress(), acc.getpermission());          return "redirect:/login";      }      @requestmapping(value = "/login", method = requestmethod.post)     public string login(@modelattribute("account") account acc) throws exception {          this.customerservice.login(acc.getusername(), acc.getpassword());          return "redirect:/products";     }      @requestmapping(value = "/logout", method = requestmethod.post)     public string logout(@modelattribute("account") account acc) throws exception {          this.customerservice.logout(acc.getid());          return "redirect:/login";     }      @requestmapping(value="/changepassword/{newpassword}",  method = requestmethod.post)     public string changepassword(@modelattribute("account") account acc,             @pathvariable("newpassword") string newpassword) throws exception {         this.customerservice.changepassword(acc.getusername(), acc.getpassword(), newpassword);         return "redirect:/login";     }      @requestmapping(value = "/products", method = requestmethod.get)     public modelandview showproducts() {         list<product> productlist = this.customerservice.showallproducts();         return new modelandview("products", "productlist", productlist);     } } 

web.xml

 <....>``        <context-param>             <param-name>contextconfiglocation</param-name>             <param-value>/web-inf/root-context.xml</param-value>         </context-param>          <listener>             <listener-class>org.springframework.web.context.contextloaderlistener</listener-class>         </listener>          <servlet>             <servlet-name>appservlet</servlet-name>             <servlet-class>org.springframework.web.servlet.dispatcherservlet</servlet-class>             <init-param>                 <param-name>contextconfiglocation</param-name>                 <param-value>/web-inf/appservlet/servlet-context.xml</param-value>             </init-param>             <load-on-startup>1</load-on-startup>         </servlet>          <servlet-mapping>             <servlet-name>appservlet</servlet-name>             <url-pattern>/</url-pattern>         </servlet-mapping>     </web-app> 

root-context.xml (empty)

    <?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"         xsi:schemalocation="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">      </beans> 

servlet-context.xml

    <?xml ....">          <beans:bean             class="org.springframework.web.servlet.view.internalresourceviewresolver">             <beans:property name="prefix" value="/web-inf/jsp/" />             <beans:property name="suffix" value=".jsp" />         </beans:bean>          <context:component-scan base-package="com.project" />          <!-- enables spring mvc @controller programming model -->         <annotation-driven />          <!-- handles http requests /resources/** efficiently serving              static resources in ${webapproot}/resources directory -->         <resources mapping="/resources/**" location="/resources/" />           <beans:bean id="datasource" class="org.apache.commons.dbcp.basicdatasource"             destroy-method="close">             <beans:property name="driverclassname" value="com.mysql.jdbc.driver" />             <beans:property name="url"                 value="jdbc:mysql://localhost:3306/guitarshop" />             <beans:property name="username" value="root" />             <beans:property name="password" value="" />         </beans:bean>           <beans:bean id="sessionfactory"             class="org.springframework.orm.hibernate3.annotation.annotationsessionfactorybean">             <beans:property name="annotatedclasses">                 <beans:list>                     <beans:value>com.project.model.account</beans:value>                     <beans:value>com.project.model.product</beans:value>                 </beans:list>             </beans:property>             <beans:property name="hibernateproperties">                 <beans:props>                     <beans:prop key="hibernate.dialect">org.hibernate.dialect.mysqldialect                     </beans:prop>                     <beans:prop key="hibernate.show_sql">true</beans:prop>                     <beans:prop key="hibernate.enable_lazy_load_no_trans">true</beans:prop>                 </beans:props>             </beans:property>         </beans:bean>      <!--    <beans:bean id="dao" -->     <!--        class="com.project.dataaccesslayer.dataaccessobject"> -->     <!--        <beans:property name="sessionfactory" ref="sessionfactory" /> -->     <!--    </beans:bean> -->      <!--    <beans:bean id="customerdao" class="com.project.dataaccesslayer.customerdao"> -->     <!--        <beans:property name="dao" ref="dao" /> -->     <!--    </beans:bean> -->      <!--    <beans:bean id="administratordao" -->     <!--        class="com.project.dataaccesslayer.administratordao"> -->     <!--        <beans:property name="dao" ref="dao" /> -->     <!--    </beans:bean> -->       <!--    <beans:bean id="customerservice" class="com.project.services.customerservice"> -->     <!--        <beans:property name="customerdao" ref="customerdao"></beans:property> -->     <!--    </beans:bean> -->      <!--    <beans:bean id="administratorservice" class="com.project.services.administratorservice"> -->     <!--        <beans:property name="administratordao" ref="administratordao"></beans:property> -->     <!--    </beans:bean> -->          <tx:annotation-driven transaction-manager="transactionmanager" />          <beans:bean id="transactionmanager"             class="org.springframework.orm.hibernate3.hibernatetransactionmanager">             <beans:property name="sessionfactory"                 ref="sessionfactory" />         </beans:bean>      </beans:beans> 

i commented dao , service beans because understood @repository, @component , @service annotations create beans.

i have use dataaccessobject in both customerdao , administratordao.

enter image description here

you expecting dependency dataaccessobject bean @qualifier("custdao") inside customerdao, there no dataaccessobject beans available @qualifier("custdao")

in other words, issue because of @qualifier("custdao") i.e., spring container not inject dataaccessobject bean customerdao (as there no beans available expected @qualifier), need change dataaccessobject shown below:

@repository @qualifier("custdao") public class dataaccessobject {     //current code } 

you can here more on @qualifier


Comments

Popular posts from this blog

php - How to display all orders for a single product showing the most recent first? Woocommerce -

asp.net - How to correctly use QUERY_STRING in ISAPI rewrite? -

angularjs - How restrict admin panel using in backend laravel and admin panel on angular? -