当前位置: 首页 > 知识库问答 >
问题:

@Autowired fields导致org.springframework.beans.factory.BeanCreationException

史烨
2023-03-14

当我尝试使用@autowired时,它给了我例外

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

    <context:component-scan base-package="com.dataanalyser.controller"/>
    <!-- <context:component-scan base-package="com.dataanalyser"/> -->
    <context:component-scan base-package="com.dataanalyser.dao"/>
    <context:component-scan base-package="com.dataanalyser.service"/> 
    <mvc:annotation-driven/>

    <mvc:default-servlet-handler/>
    <context:annotation-config />

    <bean id="viewResolver"
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name = "prefix" value="/WEB-INF/" />            
        <property name = "suffix" value = ".html" />
    </bean>    

    <bean id="dataSource"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="org.postgresql.Driver" />
        <property name="url" value="jdbc:postgresql://localhost:5432/GoAnalyserDB" />
        <property name="username" value="postgres" />
        <property name="password" value="toor" />
    </bean>

    <bean id = "goAnalyserService" class = "com.dataanalyser.serviceimpl.GoAnalyserServiceImpl"/>
    <bean id = "userDao" class = "com.dataanalyser.daoimpl.UserDaoImpl"/>
</beans>
@Controller
public class GoAnalyserControl {

    public GoAnalyserControl()
    {
        System.out.println("------- Inside the controller -------");
    }

    @Autowired
    GoAnalyserService goAnalyserService;

    @RequestMapping(value = "/logInChecker", method = RequestMethod.POST, consumes = {"application/json"})
    public @ResponseBody String logInCheckerFn(@RequestBody UserLogData userLogData){
        System.out.println("inside loginChecker()");
        //GoAnalyserService goAnalyserService = new GoAnalyserServiceImpl(); 
        Integer userAuthFlag = goAnalyserService.checkUserAuth(userLogData);
        System.out.println(userAuthFlag.toString());
        return userAuthFlag.toString();
    }
}
public interface GoAnalyserService {

    public Integer checkUserAuth(UserLogData userLogData);

}
public class GoAnalyserServiceImpl implements GoAnalyserService {

    @Autowired
    UserDao userDao;

    @Override 
    public Integer checkUserAuth(UserLogData userLogData){
        //UserDao userDao = new UserDaoImpl(); 
        if((userDao.getUserCount(userLogData.getUserName())) == 1){
            String dbPass = userDao.getUserPass(userLogData.getUserName());
            if( dbPass.equals(userLogData.getPassword()))
                return 1;
            else
                return 2;
        }else
            return 0;
    }

}

当我在没有@autowired注释的情况下尝试它时,这段代码很好,但当我添加@autowired时,它给了我

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'goAnalyserControl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: com.dataanalyser.service.GoAnalyserService com.dataanalyser.controller.GoAnalyserControl.goAnalyserService; nested exception is org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [com.dataanalyser.serviceimpl.GoAnalyserService] for bean with name 'GoAnalyserService' defined in ServletContext resource [/WEB-INF/spring-dispatcher-servlet.xml]; nested exception is java.lang.ClassNotFoundException: com.dataanalyser.serviceimpl.GoAnalyserService
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: com.dataanalyser.service.GoAnalyserService com.dataanalyser.controller.GoAnalyserControl.goAnalyserService; nested exception is org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [com.dataanalyser.serviceimpl.GoAnalyserService] for bean with name 'GoAnalyserService' defined in ServletContext resource [/WEB-INF/spring-dispatcher-servlet.xml]; nested exception is java.lang.ClassNotFoundException: com.dataanalyser.serviceimpl.GoAnalyserService
Caused by: org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [com.dataanalyser.serviceimpl.GoAnalyserService] for bean with name 'GoAnalyserService' defined in ServletContext resource [/WEB-INF/spring-dispatcher-servlet.xml]; nested exception is java.lang.ClassNotFoundException: com.dataanalyser.serviceimpl.GoAnalyserService

像这样的很少,我认为spring-dispatcher-servlet.xml中有问题,我搜索了很多,仍然没有找到问题。我有任何jar文件需要添加到项目中....??

共有1个答案

尹光辉
2023-03-14

将@repo放在GoAnalyserServiceImpl类上

当您使用@autowired时,您不必担心创建对象。使用@autowired必须位于类的顶部@controller或@repo或@service/only@component。注释用于将类标记为Spring3中的控制器。

 类似资料:
  • 问题内容: 我注意到执行和启动任务有时会抛出EXC_BAD_ACCESS。给出错误的实际调用方法似乎有所不同,但始终来自。在大多数情况下,调用方法来自。我在下面附加了两个崩溃日志,其中包含不同的调用方。我还附加了的实现。 不幸的是,我无法可靠地重现该错误,因此没有共享的示例脚本。创建和启动对象最终将产生错误。较大的文件似乎更经常发生。我在这里实施错了吗?有没有一种好的方法可以从此堆栈跟踪进行调试?

  • 问题内容: Javascript上找到的脚本是:如何获取在中断标签之后/之前的文本节点,并用ddb标签包装它们? 在通过WebDriver加载的每个页面上运行时, 测试运行3分钟后出现以下错误: 基本上,其目的是捕获xpath语法无法选择的文本节点。Javascript在带有break的break标签之前和之后包装文本节点。然后,WebDriver可以使用xpath语法获取文本。 事情似乎运行顺利

  • 我有点进退两难。我无法调试我的C OpenGL程序,因为激活调试消息会导致segfault。 我注册了一个调试回调函数: 我在以下代码中启动调试上下文: 如果我只是注释掉

  • 问题内容: 我正在尝试使用Google Firebase实时数据库。我的用户可以创建要在数据库中作为独立表以及在用户类中作为列表进行的事件。这是我用来将事件写入数据库以及发生异常的位置: 问题是,当我尝试保存创建的事件时,我开始收到消息,表明垃圾回收运行了几次,然后在该异常结束时打印了100次相同的异常,然后应用程序重新启动。 同样在顶部异常的末尾,我又得到了一个 在我的Event类中,我尝试存储

  • 问题内容: 调用反射值的.FieldByName方法时出现以下错误,确切的错误是:- 和代码是:- 我了解的并不多,但这就是我所能获得的所有信息。 这是Go Playground上代码的链接:http : //play.golang.org/p/E038cPOoGp 问题答案: 您已经是一个指向结构的指针。尝试打印出您的代码。 没有理由使用的地址,然后调用that ,它会取消对刚创建的指针的引用。

  • 我有两个类与多对多关系相连: book.java category.java 添加@column注释后,的问题得到了解决。但是,映射集合的问题就出现了。下面是我收到的堆栈轨迹: 编辑2 当我将@jointable中的从id更改为book_id时,我收到了如下所示的DataIntegrityViolationException: