2017-01-03 14 views
1

私は春までの初心者です。次のエラーに直面しています。私を助けてください。 ありがとうございます。これはMVC DAOの正しい方法ですか? autowired依存関係の注入が失敗したようなエラーが発生しました

ユーザインタフェース

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: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

で続きを読みますか? :) – davidxxx

+0

あなたはあなたの豆を定義しますか? – GVArt

答えて

2

UserDAOImplには@Repositoryがありません。

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

  • @Controller
  • @Component
  • @Repository
  • @Service
のいずれかを使用してクラスに注釈を付ける必要がある春のコンポーネントにJavaクラスを変換するには

UserDAOImplはDAO層に属するので、@Repositoryが最適です。スタックトレースがどこにある

http://howtodoinjava.com/spring/spring-core/how-to-use-spring-component-repository-service-and-controller-annotations/

+0

ありがとうございました、あなたはなぜそれが必要なのか説明してください。 –

+0

答えを更新しました – Jobin

関連する問題