这是 MVC DAO 的正确方法吗?我收到类似自动装配依赖项注入失败的错误
Posted
技术标签:
【中文标题】这是 MVC DAO 的正确方法吗?我收到类似自动装配依赖项注入失败的错误【英文标题】:Is this the correct method for MVC DAO ? I got error like Injection of autowired dependencies failed 【发布时间】:2017-05-17 07:43:00 【问题描述】:我是 spring 的新手,我面临以下错误。请帮帮我。 提前致谢。
用户界面
package com.system.dao;
import java.util.List;
import com.system.model.User;
public interface UserDAO
public String createOrUpdate(User user);
public List<User> getAllUser();
public String delete(User user);
用户界面实现
public class UserDAOImpl implements UserDAO
private NamedParameterJdbcTemplate jdbc;
@Autowired
public void setJdbc(DataSource jdbc)
this.jdbc = new NamedParameterJdbcTemplate(jdbc);
@Transactional
@Override
public String createOrUpdate(User user)
BeanPropertySqlParameterSource params = new BeanPropertySqlParameterSource(user);
if (user.isUpdate())
jdbc.update(
"update login set login_id=:loginId,login_password:loginPassword,user_name=:userName,user_contact=:userContact,user_email=:userEmail where user_id=:userId",
params);
return "User Updated";
else
jdbc.update(
"insert into login(login_id,login_password,user_name,user_contact,user_email) values(:loginId,:loginPassword,:userName,:userContact,:userEmail)",
params);
return "User added";
@Override
public List<User> getAllUser()
jdbc.query("select * from login", new RowMapper<User>()
@Override
public User mapRow(ResultSet rs, int num) throws SQLException
// TODO Auto-generated method stub
User user = new User();
user.setLoginId(rs.getString("login_id"));
user.setLoginPassword(rs.getString("login_password"));
user.setUserContact(rs.getString("user_contact"));
user.setUserEmail(rs.getString("user_email"));
user.setUserId(rs.getInt("user_id"));
user.setUserName(rs.getString("user_name"));
return user;
);
return null;
@Override
public String delete(User user)
jdbc.update("delete from login where user_id:userId", new MapSqlParameterSource("userId", user.getUserId()));
return "User deleted";
用户服务
package com.system.service;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.system.dao.impl.UserDAOImpl;
import com.system.model.User;
@Service
public class UserService
private UserDAOImpl userDAOImpl;
@Autowired(required=true)
public void setUserDAOImpl(UserDAOImpl userDAOImpl)
this.userDAOImpl = userDAOImpl;
public String createOrUpdate(User user)
return userDAOImpl.createOrUpdate(user);
public List<User> getAllUser()
return userDAOImpl.getAllUser();
public String delete(User user)
return userDAOImpl.delete(user);
上下文(dao-context)
<context:annotation-config></context:annotation-config>
<context:component-scan base-package="com.system.dao">
</context:component-scan>
<context:component-scan base-package="com.system.dao.impl">
</context:component-scan>
<context:component-scan base-package="com.system.service">
</context:component-scan>
【问题讨论】:
堆栈跟踪在哪里? :) 你在哪里定义你的 bean? 【参考方案1】:您在UserDAOImpl
中缺少@Repository
。
@Repository("userDAOImpl")
public class UserDAOImpl implements UserDAO
要将 java 类转换为 spring 组件,您需要使用以下任何一种注释类
@Controller
@Component
@Repository
@Service
由于UserDAOImpl
是属于DAO层的dao,所以@Repository
是最合适的。
阅读更多 http://howtodoinjava.com/spring/spring-core/how-to-use-spring-component-repository-service-and-controller-annotations/
【讨论】:
谢谢Jobin,你能解释一下为什么需要这样做吗以上是关于这是 MVC DAO 的正确方法吗?我收到类似自动装配依赖项注入失败的错误的主要内容,如果未能解决你的问题,请参考以下文章
java的mvc模式中bean.dao.service三层中都放啥东西啊?能具体说说吗?
C# MVC 使用复选框选项构造视图并将答案自动绑定到对象的正确方法?
Spring MVC 预授权控制器操作未收到 POST 请求