Spring必须指定至少一个基本包

时间:2013-06-13 04:39:07

标签: java spring exception compiler-errors

当我编译我的项目时,它会出现此错误并停止编译

  

org.springframework.beans.factory.BeanDefinitionStoreException:   从ServletContext资源解析XML文档时出现意外异常   [/WEB-INF/application-context.xml];嵌套异常是   java.lang.IllegalArgumentException:必须至少有一个基本包   指定的

为什么会发生这种异常以及我如何解决它。

3 个答案:

答案 0 :(得分:2)

根据Spring Doc

  

Spring提供了自动检测“原型”类并使用ApplicationContext注册相应BeanDefinition的功能。要自动检测这些类并注册相应的bean,需要在XML中包含以下元素,其中'basePackage'将是这两个类的公共父包(或者可以指定包含每个类的父包的逗号分隔列表)类)。

因此,您的应用程序上下文应如下所示:

<?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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans 
           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context-3.0.xsd">

     <context:component-scan base-package="org.example"/>

</beans>

要使您的包能够通过component-scan进行扫描,您应该根据要求使用相应的注释来注释您的java类。与@Controllers@Service等相同 查看完整详情here

答案 1 :(得分:1)

<context:component-scan base-package="Your package">

</context:component-scan>

尝试在配置文件中添加它

答案 2 :(得分:1)

从我上面的评论中

原因可能是您在应用程序上下文中启用了注释驱动的上下文配置(<context:annotation-config></context:annotation-config>),但您必须提供任何基本包来扫描spring bean。

添加应用程序的根包作为基本包以扫描bean定义

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