spring - Spring3-Mybatis Autowired NullPonterException -
spring3 + mybatis configuration follows, nullpointerexception occurs @ controller. can't find reason, please help..
fullstacktrace of error
java.lang.nullpointerexception @ hello.hellocontroller.insert(hellocontroller.java:35) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(unknown source) @ sun.reflect.delegatingmethodaccessorimpl.invoke(unknown source) @ java.lang.reflect.method.invoke(unknown source) @ org.springframework.web.method.support.invocablehandlermethod.invoke(invocablehandlermethod.java:215) @ org.springframework.web.method.support.invocablehandlermethod.invokeforrequest(invocablehandlermethod.java:132) @ org.springframework.web.servlet.mvc.method.annotation.servletinvocablehandlermethod.invokeandhandle(servletinvocablehandlermethod.java:104) @ org.springframework.web.servlet.mvc.method.annotation.requestmappinghandleradapter.invokehandlemethod(requestmappinghandleradapter.java:745) @ org.springframework.web.servlet.mvc.method.annotation.requestmappinghandleradapter.handleinternal(requestmappinghandleradapter.java:685) @ org.springframework.web.servlet.mvc.method.abstracthandlermethodadapter.handle(abstracthandlermethodadapter.java:80) @ org.springframework.web.servlet.dispatcherservlet.dodispatch(dispatcherservlet.java:919) @ org.springframework.web.servlet.dispatcherservlet.doservice(dispatcherservlet.java:851) @ org.springframework.web.servlet.frameworkservlet.processrequest(frameworkservlet.java:953) @ org.springframework.web.servlet.frameworkservlet.dopost(frameworkservlet.java:855) @ javax.servlet.http.httpservlet.service(httpservlet.java:643) @ org.springframework.web.servlet.frameworkservlet.service(frameworkservlet.java:829) @ javax.servlet.http.httpservlet.service(httpservlet.java:723) @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:290) @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:206) @ org.springframework.security.web.filterchainproxy.dofilterinternal(filterchainproxy.java:186) @ org.springframework.security.web.filterchainproxy.dofilter(filterchainproxy.java:160) @ org.springframework.web.filter.delegatingfilterproxy.invokedelegate(delegatingfilterproxy.java:343) @ org.springframework.web.filter.delegatingfilterproxy.dofilter(delegatingfilterproxy.java:260) @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:235) @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:206) @ org.apache.catalina.core.standardwrappervalve.invoke(standardwrappervalve.java:233) @ org.apache.catalina.core.standardcontextvalve.invoke(standardcontextvalve.java:191) @ org.apache.catalina.core.standardhostvalve.invoke(standardhostvalve.java:127) @ org.apache.catalina.valves.errorreportvalve.invoke(errorreportvalve.java:103) @ org.apache.catalina.core.standardenginevalve.invoke(standardenginevalve.java:109) @ org.apache.catalina.connector.coyoteadapter.service(coyoteadapter.java:293) @ org.apache.coyote.http11.http11processor.process(http11processor.java:861) @ org.apache.coyote.http11.http11protocol$http11connectionhandler.process(http11protocol.java:606) @ org.apache.tomcat.util.net.jioendpoint$worker.run(jioendpoint.java:489) @ java.lang.thread.run(unknown source)
controller class
@controller public class hellocontroller { static logger log = logger.getlogger(hellocontroller.class); @autowired private userservice userservice; @requestmapping(value = { "/", "/index.do" }) public modelandview home2() { homecoming new modelandview("hello"); } @requestmapping("userform") public modelandview form() { homecoming new modelandview("userform", "command", new user()); } @requestmapping(value = "createuser", method = requestmethod.post) public modelandview insert(@modelattribute("user") user user, bindingresult result) { log.info("insert:"+userservice+","+user); userservice.createuser(user); <---- nullpointerexception homecoming new modelandview("create_ok"); } }
userservice class
@service @configurable public class userservice { @autowired private mapper mapper; public user getuser(string userid) { homecoming mapper.getuser(userid); } public void createuser(user user) { mapper.createuser(user); } }
mapper class
public interface mapper { public user getuser(string userid); public void createuser(user user); }
web.xml(partial)
<listener> <listener-class>org.springframework.web.util.log4jconfiglistener</listener-class> </listener> <listener> <listener-class>org.springframework.web.context.contextloaderlistener</listener-class> </listener> <context-param> <param-name>contextconfiglocation</param-name> <param-value> /web-inf/spring-security.xml /web-inf/mybatis-config.xml /web-inf/jdbc-context.xml </param-value> </context-param>
mybatis-config.xml
<configuration> <settings> <!-- changes defaults --> <setting name="lazyloadingenabled" value="false" /> </settings> <typealiases> <typealias type="hello.user" alias="user"/> </typealiases> </configuration>
jdbc-context.xml
<context:annotation-config /> <context:component-scan base-package="hello"/> <!-- enable annotation style of managing transactions --> <tx:annotation-driven transaction-manager="transactionmanager" /> <!-- declare datasource has pooling capabilities --> <bean id="datasource" class="org.springframework.jdbc.datasource.drivermanagerdatasource"> <property name="driverclassname" value="com.mysql.jdbc.driver" /> <property name="url" value="jdbc:mysql://xxx.xxx.xxx.xxx:3306/mybatis" /> <property name="username" value="xxxxxx" /> <property name="password" value="xxxxxx" /> </bean> <!-- declare transaction manager --> <bean id="transactionmanager" class="org.springframework.jdbc.datasource.datasourcetransactionmanager" p:datasource-ref="datasource" /> <!-- define sqlsessionfactory, notice configlocation not needed when utilize mapperfactorybean --> <bean id="sqlsessionfactory" class="org.mybatis.spring.sqlsessionfactorybean"> <property name="datasource" ref="datasource" /> </bean> <!-- bean id="userservice" class="org.mybatis.spring.mapper.mapperfactorybean"> <property name="mapperinterface" value="hello.mapper" /> <property name="sqlsessionfactory" ref="sqlsessionfactory" /> </bean--> <!-- scan mappers , allow them autowired --> <bean class="org.mybatis.spring.mapper.mapperscannerconfigurer"> <property name="basepackage" value="hello" /> </bean>
spring nullpointerexception mybatis autowired
No comments:
Post a Comment