2017-03-04 69 views
0

由於沒有可用的'com.springmvc.dao.UserDAO'類型的bean,我得到一個錯誤:預計至少有1個符合自動導向候選人的bean。對於下面的代碼,我的基類是 「com.springmvc」沒有可用的'com.springmvc.dao.UserDAO'類型的合格bean可用:期望至少1個符合自動線候選者的bean

我的控制器類是

package com.springmvc.controller; 

import java.text.DateFormat; 
import java.util.Date; 
import java.util.List; 
import java.util.Locale; 
import java.util.Map; 

import org.slf4j.Logger; 
import org.slf4j.LoggerFactory; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.beans.factory.annotation.Qualifier; 
import org.springframework.context.ApplicationContext; 
import org.springframework.context.annotation.ComponentScan; 
import org.springframework.context.support.ClassPathXmlApplicationContext; 
import org.springframework.stereotype.Controller; 
import org.springframework.ui.Model; 
import org.springframework.web.bind.annotation.ModelAttribute; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 
import org.springframework.web.bind.annotation.RequestParam; 

import com.springmvc.dao.UserDAO; 
import com.springmvc.dao.UserDAOImpl; 
import com.springmvc.type.User; 


@Controller 
public class HomeController { 

    private static final Logger logger = LoggerFactory.getLogger(HomeController.class); 

    @Autowired 
    private UserDAO usrdao; 

    @RequestMapping(value = "/", method = RequestMethod.GET) 
    public String home(Locale locale, Model model) { 

     logger.info("Welcome home! The client locale is {}.", locale); 

     Date date = new Date(); 
     DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);  
     String formattedDate = dateFormat.format(date);  
     model.addAttribute("Date", formattedDate);  
     return "index"; 
    } 
    /* 
    @RequestMapping(value="/login",method = RequestMethod.POST) 
    public String welcome(Locale locale,Model model,@ModelAttribute("LoginBean")LoginBean login){ 

     if(login != null && login.getUserName() != "" && login.getPassword() != ""){ 

      if(login.getUserName().equals("ajith") && login.getPassword().equals("123")){ 

       model.addAttribute("msg","Welcome "+login.getUserName()); 
       return "welcome"; 
      } 
      else{ 

       model.addAttribute("error","Invalid Login Details"); 
       return "index"; 
      } 
     } 
     else{ 

      model.addAttribute("error","Please Enter Login Details"); 
      return "index"; 
     } 
    } 
    */ 
    @RequestMapping(value="/checkLogin",method = RequestMethod.POST) 
    public String CheckUser(Model model,@ModelAttribute("User")User user){ 

     if(user != null && user.getUserName() != "" && user.getPass() != ""){ 

      boolean isActive   = usrdao.isActiveUser(user.getUserName(), user.getPass()); 

      if(isActive){ 
       List<User> usrLst = usrdao.ListAllUsers(); 
       model.addAttribute("message",user.getUserName()); 
       model.addAttribute("usrLst",usrLst); 
       return "home"; 
      } 
      else{ 
       model.addAttribute("error","Invalid Login Details"); 
       return "index"; 
      }    
     } 
     return "index";  
    } 
    @RequestMapping(value="/createUser", method = RequestMethod.GET) 
    public String RedirectCreateUser(Model model){ 

     return "createUser"; 
    } 

    public String createUser(Model model, @ModelAttribute User user){  


     usrdao.CreateOrUpdateUser(user);   
     return ""; 
    } 
} 

UserDAO的

在UserDAOImpl

package com.springmvc.dao; 

import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.util.List; 

import javax.sql.DataSource; 

import org.springframework.dao.DataAccessException; 
import org.springframework.jdbc.core.JdbcTemplate; 
import org.springframework.jdbc.core.ResultSetExtractor; 
import org.springframework.jdbc.core.RowMapper; 
import org.springframework.jdbc.support.rowset.SqlRowSet; 
import org.springframework.stereotype.Repository; 

import com.springmvc.type.User; 

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

    private JdbcTemplate jdbc; 
    /* 
    public void setJdbc(JdbcTemplate jdbc) { 
     this.jdbc = jdbc; 
    } 
    */ 
    public UserDAOImpl(DataSource DS) { 
     jdbc = new JdbcTemplate(DS); 
    } 

    @Override 
    public void CreateOrUpdateUser(User user) { 

     if(user.getUid() == 0){ 
      String query = "INSERT INTO userdetails(UserName,Name,Pass) VALUES(?,?,?)"; 
      jdbc.update(query,user.getUserName(),user.getName(),user.getPass()); 
     } 
     else{ 
      String query = "UPDATE userdetails SET UserName = ?,Name = ?,Pass = ?,isActive = ? WHERE id = ?"; 
      jdbc.update(query, user.getUserName(),user.getName(),user.getPass(),user.getIsActive(),user.getUid()); 
     } 
    } 

    @Override 
    public void DeleteUser(int uid) { 

     String query = "DELETE FROM userdetails WHERE id = ?"; 
     jdbc.update(query, uid); 
    } 

    @Override 
    public User GetUser(int uid) { 

     String query = "SELECT * FROM userdetails WHERE id = ?"; 
     return jdbc.query(query, new ResultSetExtractor<User>() { 

      @Override 
      public User extractData(ResultSet rs) throws SQLException, DataAccessException { 

       if(rs.next()){ 

        User user = new User(); 
        user.setUid(rs.getInt("id")); 
        user.setUserName(rs.getString("UserName")); 
        user.setName(rs.getString("Name")); 
        user.setIsActive(rs.getInt("isActive")); 
        return user; 
       } 
       return null; 
      } 
     });  
    } 

    @Override 
    public List<User> ListAllUsers() { 

     String query  = "SELECT * FROM userdetails"; 
     List <User> usrLst = jdbc.query(query, new RowMapper<User>() { 

      @Override 
      public User mapRow(ResultSet rs, int rowNum) throws SQLException { 

       User user = new User(); 
       user.setUid(rs.getInt("id")); 
       user.setUserName(rs.getString("UserName")); 
       user.setName(rs.getString("Name")); 
       user.setIsActive(rs.getInt("isActive")); 
       return user; 
      } 
     }); 
     return usrLst; 
    } 

    @Override 
    public boolean isActiveUser(String userName, String pass) { 

     String query = "SELECT id FROM userdetails WHERE UserName = ? AND Pass = ? AND isActive = 1";  
     SqlRowSet rs = jdbc.queryForRowSet(query,userName,pass); 
     if(rs.next()) 
      return true; 
     else 
      return false; 
    } 

} 

謝謝

回答

0

UserDAOIm pl沒有默認的構造函數。要麼添加默認構造函數,要麼自動裝載構造參數。

相關問題