如何在 Spring MVC 的控制器中使用 DAO?

Posted

技术标签:

【中文标题】如何在 Spring MVC 的控制器中使用 DAO?【英文标题】:How can I use a DAO inside a Controller in Spring MVC? 【发布时间】: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 配置吗? 【参考方案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();

  


【讨论】:

以上是关于如何在 Spring MVC 的控制器中使用 DAO?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Spring-MVC 中将数据从视图传递到控制器?

如何在 Spring MVC 中基于控制器和操作方法创建 URL?

如何在 Spring MVC 控制器中接收 multipart/form-data?

如何访问 Spring MVC REST 控制器中的 HTTP 标头信息?

如何在 Spring.Net 应用程序上下文中添加 ASP.NET MVC 控制器?

Spring MVC - 如何在 Spring 控制器的地图中获取所有请求参数?