Spring mvc 如何捕获Springbean创建错误?

Spring mvc 如何捕获Springbean创建错误?,spring-mvc,model-view-controller,spring-security,Spring Mvc,Model View Controller,Spring Security,AdminService.java package service; import java.awt.Window.Type; import java.util.HashMap; import javax.servlet.http.HttpSession; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; impor

AdminService.java

package service;

import java.awt.Window.Type;
import java.util.HashMap;

import javax.servlet.http.HttpSession;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import org.springframework.stereotype.Service;


import dao.IMemberDAO;
import model.Member;

@Service
public class MemberService  
{
    @Autowired
    private IMemberDAO memberDao;

    // 로그인
    public HashMap<String, Object> login(String id,String pw)
    {
        HashMap<String, Object> result = memberDao.selectOne(id);

        if(result != null) // 존재하는 값이 있으면
        {
            String opwd = (String) result.get("pw"); // opwd = 존재하는값의 pw값을 가져온 값

            if(opwd.equals(pw)) 
            {
                return result; // true면 존재하는값을 반환
            }
            else
            {
                return null;
                //return null; // 아니면 값을 반환하지 않음.
            }
        }
        else // 존재하는 값이 없다면
        {
            return null;
        }
    }

    // 아이디 체크
    public boolean idCheck(String loginPerson)
    {
        HashMap<String, Object> user = memberDao.selectOne(loginPerson);

        if(user != null)
        {
            return false;
        }
        else
        {
            return true;
        }
    }

    // 멤버 추가
    public boolean insertMember(Member member)
    {
        if(idCheck(member.getId()))
        {
            memberDao.insertMember(member);
            return true;
        }
        else
        {
            return false;
        }
    }

    public HashMap<String, Object> getMemberInfo(String id)
    {
        return memberDao.selectOne(id);
    }

    // 회원 수정
    public void memberUpdate(HashMap<String, Object> params)
    {
        System.out.println("params is : " + params);
        memberDao.updateMember(params);
    }

    // 회원삭제
    public boolean memberDelete(String id,String pw)
    {
        HashMap<String, Object> user = memberDao.selectOne(id);

        String pw2 = (String) user.get("pw");
        System.out.println("id and pw is : " + id + "/" + pw);
        System.out.println("pw2 is : " + pw2);


        if(pw2.equals(pw))
        {
            memberDao.deleteMember(id);
            System.out.println("return true");
            return true;
        }
        else
        {
            System.out.println("return false");
            return false;
        }
    }
}
我想到了错误的原因, 但我认为这是因为我没有插入服务注释

但是,没有任何拼写错误,所有内容都写对了,并且出现了错误。有什么我不知道的吗

你能告诉我是什么导致了这个错误吗

那么解决方案呢


请帮助我。

尝试更改您的此代码:

@Autowired
public AdminService aService;
为此:

@Autowired
public AdminService adminService;
因为当你自动连线时,他看不到你上下文中的
aService
,这就是为什么他不能创建
adminService
的实例作为
服务
bean的默认名称

编辑:

另一件事是,为了实例化bean,您必须实现一个具体类的接口,您不能实例化接口,所以您需要具体的bean来实现接口上的内容。像这样:

@Repository
public class IAdminDAOImpl implements IAdminDAO {
     //Implementation here
}

@Service
public class AdminServiceImpl implements AdminService {
    //Implementation here
}

我试着按照你告诉我的那样修改代码来运行这个项目,但它也导致了一个错误@LKTN.25我认为您应该将IAdminDAO实现为像IAdminDAOImpl这样的具体bean。并将@Service放在它上面,这样上下文将把它识别为Springbean,autowire将定位您的实现@LKTN.25现在您已经修改了代码,请检查下面的链接。
<?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:jdbc="http://www.springframework.org/schema/jdbc"
    xmlns:mybatis-spring="http://mybatis.org/schema/mybatis-spring"
    xsi:schemaLocation="http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.3.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd">

    <context:component-scan base-package="service" />

    <bean class="org.springframework.jdbc.datasource.DriverManagerDataSource" id="dataSource">
        <property value="com.mysql.jdbc.Driver" name="driverClassName"></property>
        <property value="jdbc:mysql://localhost/rachelvf" name="url"></property>
        <property value="root" name="username"/>
        <property value="mysql" name="password"/>
    </bean>

    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"></property>
        <property name="mapperLocations" value="classpath*:dao/mapper/*.xml"></property>
    </bean>

    <bean id="memberDao" class="org.mybatis.spring.mapper.MapperFactoryBean">
        <property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
        <property name="mapperInterface" value="dao.IMemberDAO"></property>
    </bean>

</beans>
<?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:jdbc="http://www.springframework.org/schema/jdbc"
   xmlns:mybatis-spring="http://mybatis.org/schema/mybatis-spring"
   xsi:schemaLocation="http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.3.xsd
      http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
      http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
      http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd">
   <context:component-scan base-package="service" />

   <bean class="org.springframework.jdbc.datasource.DriverManagerDataSource" id="dataSource">
      <property value="com.mysql.jdbc.Driver" name="driverClassName"></property>
      <property value="jdbc:mysql://localhost/rachelvf" name="url"></property>
      <property value="root" name="username"/>
      <property value="mysql" name="password"/>
   </bean>


    <bean class="org.mybatis.spring.SqlSessionFactoryBean">
      <property name="mapperLocations" value="classpath:dao/mapper/*.xml"></property>
      <property name="typeAliasesPackage" value="model"></property>
      <property name="dataSource" ref="dataSource"></property>
    </bean>
</beans>
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'adminService': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private dao.IAdminDAO service.AdminService.adminDao; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [dao.IAdminDAO] 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.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:334)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1210)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:537)
@Autowired
public AdminService aService;
@Autowired
public AdminService adminService;
@Repository
public class IAdminDAOImpl implements IAdminDAO {
     //Implementation here
}

@Service
public class AdminServiceImpl implements AdminService {
    //Implementation here
}