org.springframework.beans.factory.NoSuchBeanDefinitionException解决的一些方法;

1.如果您使用注释进行配置,则可能会缺少cn.itcast.crm.service.BaseDictService实现的注释(@Service或@Component等)。

2.如果您使用(仅)xml,您可能会错过BaseDictService实现的<bean>定义。 

3.如果您使用注释并且实现注释正确,请检查扫描实现所在的包

(检查各自组件的自动扫描组件<context:component-scan base-package = “XXXX”)

或者(Spring自动扫描<context:annotation-config/>)

4.代码有无错误:例子如下,

BaseDictMapper在mapper文件下并在相关的mapper.xml进行相关配置,BaseDictService在service文件下并做了相关的spring配置文件做了对应的配置。Service实现具有相同申明方法的mapper接口(而spring并不能扫描到mapper文件夹下的接口和类),因此BeanFactory在Spring Context中没有找到bean的实例,最终导致Spring无法识别相应的bean
 


public interface BaseDictMapper {
     //根据类别代码查询数据
      List<BaseDict> queryBaseDictByDictTypeCode(String dictTypeCode);
 
}
 

public interface BaseDictService {
      //根据类别代码查询
      List<BaseDict> queryBaseDictByDictTypeCode(String dictTypeCode);
}
public class BaseDictServiceImpl implements BaseDictMapper {    //错误:应该实现为BaseDictService
      @Autowired
      private BaseDictMapper baseDictMapper;
      @Override
      public List<BaseDict> queryBaseDictByDictTypeCode(String  dictTypeCode)  {
            List<BaseDict> list =  this.baseDictMapper.queryBaseDictByDictTypeCode(dictTypeCode);
            return list;
      }
}

下面是我是我写的是时候遇到的问题,在网上找了一圈后 还是没有什么头绪,最后有了那么一点灵感 才发现就是一个很小细节问题。。

org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'PersonService' available

<bean id="PersonService" class="com.spring.service.impl.PersonServiceImpl"></bean>

结果 就是,bean中id的值存在大小写的问题,和后面的没有对应。。

猜你喜欢

转载自blog.csdn.net/SQLplus111/article/details/90581122