2017-01-03 4 views
1

Я новичок в весне, и я столкнулся с следующей ошибкой. пожалуйста, помогите мне. Спасибо заранее.Это правильный метод для MVC DAO? У меня возникла ошибка, например, с ошибкой впрыска автоволновых зависимостей

Интерфейс пользователя

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); 
} 




} 

Контекст (дао-контекст)

<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> 
+0

где находится StackTrace? :) – davidxxx

+0

где вы определяете свои бобы? – GVArt

ответ

2

Вам не хватает @Repository в UserDAOImpl.

@Repository("userDAOImpl") 
public class UserDAOImpl implements UserDAO { 

Чтобы преобразовать класс Java для пружинного элемента вам необходимо аннотировать класс с любым из следующих

  • @Controller
  • @Component
  • @Repository
  • @Service

С UserDAOImpl является дао, принадлежащим слою DAO, @Repository - лучший вариант.

далее в http://howtodoinjava.com/spring/spring-core/how-to-use-spring-component-repository-service-and-controller-annotations/

+0

Спасибо, Jobin, не могли бы вы объяснить, почему это необходимо? –

+0

обновил ответ – Jobin

 Смежные вопросы

  • Нет связанных вопросов^_^