spring 框架错误 org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type

 

启动TOMCAT服务器 报如下错误

 

2013-2-2 15:42:20 org.apache.catalina.core.StandardWrapperValve invoke
严重: Allocate exception for servlet Spring MVC Dispatcher Servlet
org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [com.ait.ess.service.impl.ModifyPassWordSerImpl] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:924)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:793)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:707)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:478)
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:284)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1106)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464)
    at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:631)
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:588)
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:645)
    at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:508)
    at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:449)
    at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:133)
    at javax.servlet.GenericServlet.init(GenericServlet.java:212)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1173)
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:809)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:129)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Unknown Source)

问题出现背Spring 框架下面 建立如下

Controller --> Service --->Dao --->.xml (ibaties配置文件)

正确格式

1 将SQ语句写入sqlModifyPassword.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap 
    PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" 
    "http://www.ibatis.com/dtd/sql-map-2.dtd">
<sqlMap namespace="ess.modifypassword">
<update id="modifyPassword" parameterClass="linkMap">
    <![CDATA[
              UPDATE sy_user set PASSWORD =  #PASSWORD#  where PERSON_ID =  #PERSON_ID# and CPNY_ID = #CPNY_ID#
    ]]>
</update>
</sqlMap>

将上述文件添加入总配置文件 sqlMapConfig.xml

<sqlMap resource="com/ait/ess/dao/sql/sqlModifyPassword.xml" />

 

2 DAO实现类 注意@Repository 标志

@Repository
public class ModifyPassWordDaoImpl extends SqlMapClientSupport  implements ModifyPassWordDao {
 
    @Override
    public boolean modifyPassword(Object obj) {
        try {
            this.update("ess.modifypassword.modifyPassword", obj);
         
        } catch (SQLException e) {
            e.printStackTrace();
            return false;
        }
        return true;
 

    }

 
}

DAO 接口 --无特殊之处

public interface ModifyPassWordDao {
    /**
     * 修改密码(change password)
   
     */
    public boolean modifyPassword(Object obj);
}

 

3 Service 实现类 @Service 标志很重要

 

@Service
public class ModifyPassWordSerImpl implements ModifyPassWordSer {
    Logger logger = Logger.getLogger(ModifyPassWordSerImpl.class);

    @Autowired
    private ModifyPassWordDao ModifyPassWordDao;
    
    
    @Override
    public boolean modifyPassword(HttpServletRequest request) throws Exception {
        // TODO Auto-generated method stub
        // 页面提交数据
                LinkedHashMap paramMap = getMapByRequest(request);
                return this.ModifyPassWordDao.modifyPassword (paramMap);
        /**
         * 方法说明(中文,英文)
         * @param parameterObject
         * @return
         * @throws Exception
         */

    }
    /**
     * 通过request请求封装查询条件(get search conditions for request)
     * 
     * @param request
     * @return
     */
    private LinkedHashMap getMapByRequest(HttpServletRequest request) {
        AdminBean admin = SessionUtil.getLoginUserFromSession(request);
        // 页面提交数据
        LinkedHashMap paramMap = ObjectBindUtil.getRequestParamData(request);
        paramMap.put("PERSON_ID", admin.getPersonId());
        paramMap.put("CPNY_ID", admin.getCpnyId());
        paramMap.put("PASSWORD", admin.getPassword ()); 
        return paramMap;
    }
}

 

Service 接口 -- 无特殊之处

public interface ModifyPassWordSer {
    public boolean modifyPassword(HttpServletRequest request)
            throws Exception;
}

Ctroller

@Controller
@RequestMapping(value = "/ess/modify")

public class ModifyPassWordCtroller {
    Logger logger = Logger.getLogger(ModifyPassWordCtroller.class);
    
    
    @Autowired
    private ModifyPassWordSer modifyPassWordSer;
    /**
     * 密码修改(change password)
     * 
     * @param request
     * @param response
     * @param modelMap
     * @return
     * @throws Exception
     */
    @SuppressWarnings("unchecked")
    @RequestMapping(value = "/ModifyPassword")
    public Map<String, Object> viewPersonInfoApplyConfirmList(
            HttpServletRequest request, HttpServletResponse response,
            ModelMap modelMap) throws Exception {
        
        Map<String, Object> map = new HashMap<String, Object>();
        boolean result;
        try {
            result = modifyPassWordSer.modifyPassword(request);
            if (result) {
                map.put("navTabId", "ess0301");
                map.put("message", TipMessage.getTipMessage("alert.message.hr.modifypassword.modifypassword_success",request));//个人密码修改成功
                map.put("statusCode", "200");
                // map.put("callbackType", "closeCurrent");
            } else {
                map.put("message", TipMessage.getTipMessage("alert.message.hr.modifypassword.modifypassword_fail",request));//个人密码修改失败,请重试!
                map.put("statusCode", "300");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return map;
      
    }
}

 

 

 

 

 

posted @ 2013-02-02 17:05  王超_cc  阅读(210649)  评论(2编辑  收藏  举报