java - org.springframework.beans.factory.BeanCreationException: -
i getting following exception,please resolve ?
org.springframework.beans.factory.beancreationexception: error creating bean name 'usercontroller': injection of autowired dependencies failed; nested exception org.springframework.beans.factory.beancreationexception: not autowire field: private com.dao.userdao com.controller.usercontroller.userdao; nested exception org.springframework.beans.factory.beancreationexception: error creating bean name 'userdaoimpl': injection of autowired dependencies failed; nested exception org.springframework.beans.factory.beancreationexception: not autowire field: private org.hibernate.sessionfactory com.dao.userdaoimpl.sessionfactory; nested exception org.springframework.beans.factory.nosuchbeandefinitionexception: no matching bean of type [org.hibernate.sessionfactory] 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:609) org.springframework.context.support.abstractapplicationcontext.finishbeanfactoryinitialization(abstractapplicationcontext.java:918) org.springframework.context.support.abstractapplicationcontext.refresh(abstractapplicationcontext.java:469) 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.authenticator.authenticatorbase.invoke(authenticatorbase.java:502) org.apache.catalina.valves.errorreportvalve.invoke(errorreportvalve.java:100) org.apache.catalina.valves.accesslogvalve.invoke(accesslogvalve.java:953) org.apache.catalina.connector.coyoteadapter.service(coyoteadapter.java:408) org.apache.coyote.http11.abstracthttp11processor.process(abstracthttp11processor.java:1041) org.apache.coyote.abstractprotocol$abstractconnectionhandler.process(abstractprotocol.java:603) org.apache.tomcat.util.net.jioendpoint$socketprocessor.run(jioendpoint.java:310) java.util.concurrent.threadpoolexecutor$worker.runtask(unknown source) java.util.concurrent.threadpoolexecutor$worker.run(unknown source) java.lang.thread.run(unknown source) root cause org.springframework.beans.factory.beancreationexception: not autowire field: private com.dao.userdao com.controller.usercontroller.userdao; nested exception org.springframework.beans.factory.beancreationexception: error creating bean name 'userdaoimpl': injection of autowired dependencies failed; nested exception org.springframework.beans.factory.beancreationexception: not autowire field: private org.hibernate.sessionfactory com.dao.userdaoimpl.sessionfactory; nested exception org.springframework.beans.factory.nosuchbeandefinitionexception: no matching bean of type [org.hibernate.sessionfactory] 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) 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:609) org.springframework.context.support.abstractapplicationcontext.finishbeanfactoryinitialization(abstractapplicationcontext.java:918) org.springframework.context.support.abstractapplicationcontext.refresh(abstractapplicationcontext.java:469) 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.authenticator.authenticatorbase.invoke(authenticatorbase.java:502) org.apache.catalina.valves.errorreportvalve.invoke(errorreportvalve.java:100) org.apache.catalina.valves.accesslogvalve.invoke(accesslogvalve.java:953) org.apache.catalina.connector.coyoteadapter.service(coyoteadapter.java:408) org.apache.coyote.http11.abstracthttp11processor.process(abstracthttp11processor.java:1041) org.apache.coyote.abstractprotocol$abstractconnectionhandler.process(abstractprotocol.java:603) org.apache.tomcat.util.net.jioendpoint$socketprocessor.run(jioendpoint.java:310) java.util.concurrent.threadpoolexecutor$worker.runtask(unknown source) java.util.concurrent.threadpoolexecutor$worker.run(unknown source) java.lang.thread.run(unknown source)
respective java codes below - userdao
package com.dao; import java.util.list; import com.entity.userdetails; public interface userdao { public list<userdetails> getuserprofiledetails(); public int saveuserdetails(userdetails userdetails); public userdetails authenticateuser(string email,string password); public void closesessionobjects(); }
userdaoimpl
package com.dao; import java.util.list; import org.apache.log4j.logger; import org.hibernate.query; import org.hibernate.session; import org.hibernate.sessionfactory; import org.hibernate.transaction; import org.springframework.beans.factory.annotation.autowired; import org.springframework.stereotype.component; import org.springframework.transaction.annotation.transactional; import com.dao.userdao; import com.entity.userdetails; @component @transactional(readonly = true) public class userdaoimpl implements userdao { private static logger logger = logger.getlogger(userdaoimpl.class); @autowired private sessionfactory sessionfactory; session session = null; private void assignsessionlocalvariable(){ if(session == null || !session.isopen()){ try{ session = sessionfactory.opensession(); }catch(exception e){session = null;} } } @override public list<userdetails> getuserprofiledetails() { list<userdetails> details=null; if(session!=null){ try{ query query = session.createquery("from user"); details = query.list(); }catch(exception e) { logger.error("########### exception occured ########## "+e+" "); } } return details; } @override public int saveuserdetails(userdetails userdetails){ int saved=1; assignsessionlocalvariable(); try{ transaction tx=session.begintransaction(); session.save(userdetails); tx.commit(); saved=0; logger.info("#### details saved successfuly #####"); }catch(exception e){ logger.error("### exception occured in userdaoimpl class #### "+e+""); } return saved; } @override public userdetails authenticateuser(string email, string pwd) { // todo auto-generated method stub system.out.println("##### userdaoimple authenticateuser started #####"); assignsessionlocalvariable(); logger.info("### authentication of user in progress ####"); userdetails users = null; if(session!=null){ try{ query qry = session.createquery ("from user hu hu.email = :email , hu.password = :password"); qry.setparameter ("email", email); qry.setparameter ("password", pwd); qry.setmaxresults(1); users = (userdetails)qry.uniqueresult(); }catch(exception e){ users = null; system.out.println("userdaoimpl exception in getting unique result["+e+"] "); logger.error("userdaoimpl exception in getting unique result["+e+"]"); } }//if(session!=null) return users; } public void closesessionobjects(){ if(null != session) session.clear();//close(); //if(null != sessionfactory) sessionfactory.close(); } }
useddetails.java
package com.entity; import java.util.date; import javax.persistence.column; import javax.persistence.entity; import javax.persistence.id; import javax.persistence.table; import javax.persistence.temporal; import javax.persistence.temporaltype; @entity @table(name="user",catalog="test") public class userdetails implements java.io.serializable{ private int id; private string firstname; private string lastname; private int age; private date creationtime; private date lastmodtime; private string password; private string email; public userdetails(){} public userdetails(string email){ this.email=email; } @id @column(name="id", unique = true, nullable = false) public int getid() { return id; } public void setid(int id){ this.id = id; } @column(name="first_name") public string getfirstname() { return firstname; } public void setfirstname(string firstname) { this.firstname = firstname; } @column(name="last_name") public string getlastname() { return lastname; } public void setlastname(string lastname) { this.lastname = lastname; } @column(name="age") public int getage() { return age; } public void setage(int age) { this.age = age; } @temporal(temporaltype.timestamp) @column(name = "creation_time", nullable = false, length = 19) public date getcreationtime() { return creationtime; } public void setcreationtime(date creationtime) { this.creationtime = creationtime; } @temporal(temporaltype.timestamp) @column(name = "last_mod_time", nullable = false, length = 19) public date getlastmodtime() { return lastmodtime; } public void setlastmodtime(date lastmodtime) { this.lastmodtime = lastmodtime; } @column(name="password") public string getpassword() { return password; } public void setpassword(string password) { this.password = password; } @column(name="email") public string getemail() { return email; } public void setemail(string email) { this.email = email; } }
usercontroller.java
package com.controller; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpsession; import java.util.date; import org.apache.log4j.logger; import org.springframework.beans.factory.annotation.autowired; import org.springframework.stereotype.controller; import org.springframework.web.bind.annotation.requestmapping; import org.springframework.web.servlet.modelandview; import com.dao.userdao; import com.entity.userdetails; @controller public class usercontroller { private static logger logger = logger.getlogger(usercontroller.class); string errforward = "user.error", forward = null; @autowired userdao userdao; @autowired userdetails ud=null;; @requestmapping("/register") public modelandview registerpage() { logger.info("## registration page forward #####"); return new modelandview("user.registration"); } @requestmapping("/registeruser") public modelandview registeruser(httpservletrequest request) { logger.info("### inside registeration controller ####"); int issave=0; date creation_time=null,lastmodtime=null; string fname=request.getparameter("fname"); fname=(fname.equals(""))?"":fname.trim(); string lname=request.getparameter("lname"); lname=(lname.equals(""))?"":lname.trim(); int age=integer.parseint(request.getparameter("age")); age=(age==0)?0:age; string email=request.getparameter("email"); email=(email.equals(""))?"":email.trim(); string pswd=request.getparameter("pswd"); pswd=(pswd.equals(""))?"":pswd.trim(); date date=new date(); //creation_time=dt.getdate(); ud.setfirstname(fname); ud.setlastname(lname); ud.setage(age); ud.setpassword(pswd); ud.setemail(email); ud.setcreationtime(creation_time); ud.setlastmodtime(lastmodtime); try{ issave=userdao.saveuserdetails(ud); if (issave==0){ system.out.println("%%% saved user ::::"+issave); logger.info("successfully saved data :::"+issave); forward="user.registrationusersuccess"; } }catch(exception e){ logger.error("##### error while saving use details #####"+e); return new modelandview(forward); } return new modelandview(forward); } @requestmapping("/login") public modelandview addstudent(httpservletrequest request) { logger.info("### login in progress ####"); string email=request.getparameter("email"); email=(email.equals(""))?"":email.trim(); string pswd=request.getparameter("pswd"); pswd=(pswd.equals(""))?"":pswd.trim(); string login=request.getparameter("login"); login = (null != login)?login:""; logger.info("### user login ::: ["+email+"]:::: ######"); httpsession httpsession = request.getsession(); if(null!=login)ud= userdao.authenticateuser(email, pswd); if(null!=ud){ httpsession.setattribute("isactiveuser", ud); forward = "user.profile"; }else forward = errforward; return new modelandview(forward); } }
web.xml
<?xml version="1.0" encoding="utf-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:web="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemalocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" id="webapp_id" version="2.4"> <display-name>spring user</display-name> <servlet> <servlet-name>user</servlet-name> <servlet-class> org.springframework.web.servlet.dispatcherservlet </servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>user</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>/jsp/home.jsp</welcome-file> </welcome-file-list> <session-config> <session-timeout>60</session-timeout> </session-config> </web-app>
user-servlet.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.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd"> <mvc:annotation-driven/> <context:annotation-config/> <context:component-scan base-package="com.controller" /> <context:component-scan base-package="com.dao" /> <context:component-scan base-package="com.entity" /> <!-- title defining --> <bean id="viewresolver" class="org.springframework.web.servlet.view.urlbasedviewresolver"> <property name="viewclass"> <value> org.springframework.web.servlet.view.tiles2.tilesview </value> </property> </bean> <!-- defining title file location --> <bean id="tilesconfigurer" class="org.springframework.web.servlet.view.tiles2.tilesconfigurer"> <property name="definitions"> <list> <value>/web-inf/tiles.xml</value> </list> </property> </bean> <import resource="db-config.xml" /> </beans>
db-config.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:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemalocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd"> <bean id="dbpropertyconfigurer" class="org.springframework.beans.factory.config.propertyplaceholderconfigurer"> <property name="locations"> <list> <value>/web-inf/configuration.properties</value> </list> </property> </bean> <!-- database properties --> <bean id="datasource" class="com.mchange.v2.c3p0.combopooleddatasource" destroy-method="close" p:driverclass="${jdbc.driver.classname}" p:jdbcurl="${jdbc.url}" p:user="${jdbc.username}" p:password="${jdbc.password}" /> <bean id="sessionfactory" class="org.springframework.orm.hibernate3.annotation.annotationsessionfactorybean"> <property name="datasource"> <ref bean="datasource" /> </property> <property name="hibernateproperties"> <props> <prop key="hibernate.dialect">${jdbc.hibernate.dialect}</prop> <prop key="hibernate.show_sql">true</prop> </props> </property> <property name="packagestoscan" value="com.entity" /> </bean> <bean id="transactionmanager" class="org.springframework.orm.hibernate3.hibernatetransactionmanager"> <property name="sessionfactory" ref="sessionfactory" /> </bean> <tx:annotation-driven transaction-manager="transactionmanager" /> </beans>
when try run code getting exception have posted. autowired injection not happening. problem ?
take close @ exception, says
nested exception org.springframework.beans.factory.nosuchbeandefinitionexception: no matching bean of type [org.hibernate.sessionfactory] found dependency: expected @ least 1 bean qualifies autowire candidate dependency.
it looks not creating sessionfactory
bean. make sure have sessionfactory added in spring configuration
for example :
<bean id="sessionfactory" class="org.springframework.orm.hibernate4.localsessionfactorybean" p:datasource-ref="datasource" p:configlocation="${hibernate.config}" />
Comments
Post a Comment