java - Generic DAO implementation, Injection failure @ controller level -


  import java.lang.reflect.field; import java.lang.reflect.parameterizedtype; import java.text.parseexception; import java.util.arraylist; import java.util.collection; import java.util.date; import java.util.list; import java.util.map;  import javax.persistence.entitymanager; import javax.persistence.persistencecontext; import javax.persistence.query; import javax.persistence.transient;  import org.apache.log4j.logger; import org.springframework.dao.dataaccessexception;   /**  * generic dao implementation class provides basic data access ,  * manipulation functionality  *   * @author syed.ammar  *   */ public abstract class genericdaoimpl<t> implements genericdao<t> {      private static logger logger = logger.getlogger(genericdaoimpl.class);      @suppresswarnings("unchecked")     protected class<t> clazz = (class<t>) ((parameterizedtype) this.getclass().getgenericsuperclass()).getactualtypearguments()[0];      @persistencecontext     protected entitymanager entitymanager;      public entitymanager getentitymanager() {         return entitymanager;     }      public void setentitymanager(entitymanager entitymanager) {         this.entitymanager = entitymanager;     }      @override     public t save(t entity) throws dataaccessexception {         logger.debug("merging object of type: " + entity.getclass().getcanonicalname());         entity = entitymanager.merge(entity);         return entity;     }      @override     public void persist(t entity) throws dataaccessexception {         logger.debug("persisting object of type: " + entity.getclass().getcanonicalname());         entitymanager.persist(entity);     }       /**      * method update record in database      *       * @param updatableobj      *            - updated copy merge      * @return updated, registered persistent instance      * */     @override     public t update(t entity) {         return save(entity);     }      /**      * delete given entity.      *       * @param entityclass      *            - entityclass delete      * */     @override     public void delete(t entity) {         logger.debug("delete entity of type: " + entity.getclass().getcanonicalname());         entitymanager.remove(entity);     }      /**      * delete given entities.      *       * @param entities      *            - entities delete      * */     public void deleteall(list<t> entities) {         (t entity : entities) {             delete(entity);         }     }      /**      * delete entity id      * @param id      *      - entity id       */     @override     public int deletebyid(long id) {         query deletequery = entitymanager.createquery("delete " + clazz.getname() + " entity entity.id=:id");         deletequery.setparameter("id", id);         return deletequery.executeupdate();          }      /**      * delete entity customer      * @param customer      *      - customer entity       */ /*  @override     public int deletebycustomer(customer customer) {         query deletequery = entitymanager.createquery("delete " + clazz.getname() + " entity entity.customer=:customer");         deletequery.setparameter("customer", customer);         return deletequery.executeupdate();     } */       /**      * delete entity reseller      * @param reseller      *      - reseller entity       */ /*  @override     public int deletebyreseller(reseller reseller) {         query deletequery = entitymanager.createquery("delete " + clazz.getname() + " entity entity.customer.reseller=:reseller");         deletequery.setparameter("reseller", reseller);         return deletequery.executeupdate();     } */     /**      * read entity instance of given class given id, throwing      * exception if not found. retrieves read-write objects      * hibernate unitofwork in case of non-read-only transaction, ,      * read-only objects else.      * @param id      *            - identity key of desired object      * @return entity instance      * */     @override     public t getbyid(long id) {         logger.debug("getbyid:" + id + ", t class: " + clazz );         return entitymanager.find(clazz, id);     }      @override     public list<t> getresultlist(string jpql, map<string, object> queryparams) {         logger.debug("query: " + jpql);         query query = entitymanager.createquery(jpql.tostring());         for(map.entry<string, object> entry : queryparams.entryset()){             query.setparameter(entry.getkey(), entry.getvalue());         }         @suppresswarnings("unchecked")         list<t> resultlist = (list<t>) query.getresultlist();         return resultlist;     }      /**      * generic search method without sort column , direction searches      * record depending upon property values set in passed model bean.       * method has been deprecated , removed soon. create query       * specific methods in related entity dao's instead.      *       * @param entity      *            entity data set criteria search      * @return list of searched model beans applying passed values of      *         model bean criteria      */     @override     @deprecated     public list<t> search(t entity) {         return search(entity, null, null);     }      /**      * generic search method searches record depending upon property      * values set in passed model bean.       * method has been deprecated , removed soon. create query       * specific methods in related entity dao's instead.      *       * @param entity      *            entity data set criteria search      * @param sortbycolumn      *            name of column used sorting result      * @param sortdirection      *            1: asc 2:desc      * @return list of searched model beans applying passed values of      *         model bean criteria      */     @override     @deprecated     @suppresswarnings("unchecked")     public list<t> search(t entity, string sortbycolumn, long sortdirection) {         list<object> params = new arraylist<object>();         string query = "select entity " + clazz.getname() + " entity";          field[] publicfields = entity.getclass().getdeclaredfields();         (field field : publicfields) {             field.setaccessible(true);             object value = null;             try {                 value = field.get(entity);             } catch (illegalargumentexception e) {                 logger.error("", e);             } catch (illegalaccessexception e) {                 logger.error("", e);             }             if (value == null                     || collection.class.isassignablefrom(field.gettype())                     || java.lang.reflect.modifier.isstatic(field.getmodifiers())                     || field.getannotation(transient.class) != null) {                 continue;             }             if (field.gettype().equals(string.class)) {                 if (query.contains("where")) {                     query = query + " , " + field.getname() + " ?"                             + params.size();                 } else {                     query = query + " " + field.getname() + " ?"                             + params.size();                 }                 params.add("%" + value.tostring() + "%");             } else if (field.gettype().equals(date.class)) {                 date startdatetime = null;                 date enddatetime = null;                 string starttime = date_format.format(value) + " 00:00:00";                 string endtime = date_format.format(value) + " 23:59:59";                 try {                     startdatetime = date_time_format.parse(starttime);                     enddatetime = date_time_format.parse(endtime);                 } catch (parseexception e) {                     logger.error("", e);                 }                 if (startdatetime == null || enddatetime == null) {                     continue;                 }                 if (query.contains("where")) {                     query = query + " , " + field.getname() + " between ?"                             + params.size() + " , ?" + (params.size() + 1);                 } else {                     query = query + " " + field.getname() + " between ?"                             + params.size() + " , ?" + (params.size() + 1);                 }                  params.add(startdatetime);                 params.add(enddatetime);             } else {                 if (query.contains("where")) {                     query = query + " , " + field.getname() + " = "                             + params.size();                 } else {                     query = query + " " + field.getname() + " = ?"                             + params.size();                 }                 params.add(value);             }         }          query queryobj = entitymanager.createquery(query);          // check sorting parameters not not blank or null, apply sorting         // criteria         if (sortbycolumn != null && sortdirection != null) {             if (sortdirection == 1l) {                 query = query + " order " + sortbycolumn + " asc";             } else {                 query = query + " order " + sortbycolumn + " desc";             }             if (params.size() > 0) {                 (int = 0; < params.size(); i++) {                     queryobj.setparameter(i, params.get(i));                 }             }         }          return queryobj.getresultlist();     }      @override     public list<t> getall() {         return getall(null, null);     }      @override     public list<t> getall(string sortbycolumn, long sortdirection) {         string query = "select entity " + clazz.getname() + " entity";         if (sortbycolumn != null && sortdirection != null) {             if (sortdirection == 1l) {                 query = query + " order " + sortbycolumn + " asc";             } else {                 query = query + " order " + sortbycolumn + " desc";             }         }         @suppresswarnings("unchecked")         list<t> resultlist = (list<t>) entitymanager.createquery(query).getresultlist();         return resultlist;     }     /**      * generic find method identify exact records depending upon      * property values set in passed model bean else null returned      *       * @param entity      *            entity data set criteria search      * @return list of identified model beans applying passed values of      *         model bean criteria      */     @override     @suppresswarnings("unchecked")     public list<t> find(t entity) {         list<object> params = new arraylist<object>();         string query = "select entity " + entity.getclass().getname()                 + " entity";          field[] publicfields = entity.getclass().getdeclaredfields();         (field field : publicfields) {             field.setaccessible(true);             object value = null;              try {                 value = field.get(entity);             } catch (illegalargumentexception e) {                 logger.error("", e);             } catch (illegalaccessexception e) {                 logger.error("", e);             }             if (value == null                     || collection.class.isassignablefrom(field.gettype())                     || java.lang.reflect.modifier.isstatic(field.getmodifiers())                     || field.getannotation(transient.class) != null) {                 continue;             }              if (field.gettype().equals(date.class)) {                 date startdatetime = null;                 date enddatetime = null;                 string starttime = date_format.format(value) + " 00:00:00";                 string endtime = date_format.format(value) + " 23:59:59";                                try {                     startdatetime = date_time_format.parse(starttime);                     enddatetime = date_time_format.parse(endtime);                 } catch (parseexception e) {                     logger.error("", e);                 }                 if (startdatetime == null || enddatetime == null) {                     continue;                 }                 if (query.contains("where")) {                     query = query + " , " + field.getname() + " between ?"                             + params.size() + " , ?" + (params.size() + 1);                 } else {                     query = query + " " + field.getname() + " between ?"                             + params.size() + " , ?" + (params.size() + 1);                 }                 params.add(startdatetime);                 params.add(enddatetime);             } else {                 if (query.contains("where")) {                     query = query + " , " + field.getname() + " = ?"                             + params.size();                 } else {                     query = query + " " + field.getname() + " = ?"                             + params.size();                 }                 params.add(value);             }         }         if (params.size() > 0) {             query queryobj = entitymanager.createquery(query);              (int = 0; < params.size(); i++) {                 queryobj.setparameter(i, params.get(i));             }             return queryobj.getresultlist();         } else {             return null;         }     } } 

/// auto wire

@controller public class coursecontroller   {  //  @autowired //  private searchservice searchservice;      @autowired     coursedaoimp coursedao;     //.............. } 

severe: exception sending context initialized event listener instance of class org.springframework.web.context.contextloaderlistener org.springframework.beans.factory.beancreationexception: error creating bean name 'coursecontroller': injection of autowired dependencies failed; nested exception org.springframework.beans.factory.beancreationexception: not autowire field: com.softech.ls360.lcms.contentbuilder.dao.impl.coursedaoimp com.softech.ls360.lcms.contentbuilder.web.controller.coursecontroller.coursedao; nested exception org.springframework.beans.factory.nosuchbeandefinitionexception: no matching bean of type [com.softech.ls360.lcms.contentbuilder.dao.impl.coursedaoimp] 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:285) @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.populatebean(abstractautowirecapablebeanfactory.java:1074) @ 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:291) @ org.springframework.beans.factory.support.defaultsingletonbeanregistry.getsingleton(defaultsingletonbeanregistry.java:222) @ org.springframework.beans.factory.support.abstractbeanfactory.dogetbean(abstractbeanfactory.java:288) @ org.springframework.beans.factory.support.abstractbeanfactory.getbean(abstractbeanfactory.java:190) @ org.springframework.beans.factory.support.defaultlistablebeanfactory.preinstantiatesingletons(defaultlistablebeanfactory.java:580) @ org.springframework.context.support.abstractapplicationcontext.finishbeanfactoryinitialization(abstractapplicationcontext.java:895) @ org.springframework.context.support.abstractapplicationcontext.refresh(abstractapplicationcontext.java:425) @ org.springframework.web.context.contextloader.createwebapplicationcontext(contextloader.java:276) @ org.springframework.web.context.contextloader.initwebapplicationcontext(contextloader.java:197) @ org.springframework.web.context.contextloaderlistener.contextinitialized(contextloaderlistener.java:47) @ org.apache.catalina.core.standardcontext.listenerstart(standardcontext.java:4791) @ org.apache.catalina.core.standardcontext.startinternal(standardcontext.java:5285) @ org.apache.catalina.util.lifecyclebase.start(lifecyclebase.java:150) @ org.apache.catalina.core.containerbase.addchildinternal(containerbase.java:901) @ org.apache.catalina.core.containerbase.addchild(containerbase.java:877) @ org.apache.catalina.core.standardhost.addchild(standardhost.java:618) @ org.apache.catalina.startup.hostconfig.deploywar(hostconfig.java:963) @ org.apache.catalina.startup.hostconfig$deploywar.run(hostconfig.java:1600) @ java.util.concurrent.executors$runnableadapter.call(executors.java:471) @ java.util.concurrent.futuretask.run(futuretask.java:262) @ java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1145) @ java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:615) @ java.lang.thread.run(thread.java:744) caused by: org.springframework.beans.factory.beancreationexception: not autowire field: com.softech.ls360.lcms.contentbuilder.dao.impl.coursedaoimp com.softech.ls360.lcms.contentbuilder.web.controller.coursecontroller.coursedao; nested exception org.springframework.beans.factory.nosuchbeandefinitionexception: no matching bean of type [com.softech.ls360.lcms.contentbuilder.dao.impl.coursedaoimp] 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:502) @ org.springframework.beans.factory.annotation.injectionmetadata.inject(injectionmetadata.java:84) @ org.springframework.beans.factory.annotation.autowiredannotationbeanpostprocessor.postprocesspropertyvalues(autowiredannotationbeanpostprocessor.java:282) ... 26 more caused by: org.springframework.beans.factory.nosuchbeandefinitionexception: no matching bean of type [com.softech.ls360.lcms.contentbuilder.dao.impl.coursedaoimp] 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:920) @ org.springframework.beans.factory.support.defaultlistablebeanfactory.doresolvedependency(defaultlistablebeanfactory.java:789) @ org.springframework.beans.factory.support.defaultlistablebeanfactory.resolvedependency(defaultlistablebeanfactory.java:703) @ org.springframework.beans.factory.annotation.autowiredannotationbeanpostprocessor$autowiredfieldelement.inject(autowiredannotationbeanpostprocessor.java:474) ... 28 more

you did not registered bean name "coursecontroller".first register class bean.you injecting without registering coursecontroller. adding @componenetscan annotation can scan beans , spring register them.


Comments

Popular posts from this blog

basic authentication with http post params android -

vb.net - Virtual Keyboard commands -

How to get multiresult with multicondition in Sql Server -