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;
      
    }
}

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM