【问题标题】:How can I use a DAO inside a Controller in Spring MVC?如何在 Spring MVC 的控制器中使用 DAO?
【发布时间】:2014-10-16 01:15:12
【问题描述】:

在 Spring MVC 项目中,我有一个 DAO 类 myproj.models.UserDAO:

@Repository
@Transactional
public class UserDAO {

  // UserDAO methods ...

}

我应该在控制器中使用它,比如myproj.controllers.UserController:

@Controller
public class UserController {

  // UserController methods ...

  @RequestMapping(value="/{user}")
  public String create(String user) {

    // Here I want to use the UserDAO
    // ...

  }

}

如何创建 UserDAO 对象的实例并在控制器方法中使用它?

【问题讨论】:

  • 只是@Autowire UserDAO
  • 您能展示一下您的 Spring 配置吗?

标签: java spring-mvc dao spring-boot


【解决方案1】:

你可以尝试关注

@Repository
@Transactional
public class UserDAO {

  // UserDAO methods ...

}

控制器:

@Controller
public class UserController {

@Autowired //this will give you the reference to UserDAO      
UserDAO userDao; 
  // UserController methods ...

  @RequestMapping(value="/{user}")
  public String create(String user) {

    // Here I want to use the UserDAO
    userDao.userDaoMethod();
    // ...

  }

}

有关@Autowired 的更多信息,请探索this

【讨论】:

  • 我用你的代码试过了,我得到这个错误:Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private myproj.models.UserDAO myproj.controllers.UserController.userDao;
  • nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [myproj.models.UserDAO] 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)}
  • 确保您正在自动装配 UserDAO?
  • 是的,在控制器内部我只有那个自动接线。
  • 您是否完全按照代码中的说明进行操作?
【解决方案2】:

用户Autowired注解注入你的DAO的一个bean实例:

@Controller
public class UserController {

  @Autowired
  UserDAO userDao;

  @RequestMapping(value="/{user}")
  public String create(String user) {

    userDao.method();

  }

}

【讨论】:

    猜你喜欢
    • 2013-04-20
    • 2021-03-19
    • 1970-01-01
    • 1970-01-01
    • 2019-03-29
    • 1970-01-01
    • 1970-01-01
    • 2013-05-25
    • 2015-06-05
    相关资源
    最近更新 更多