-1
我一直試圖讓我的頭在幾個小時內成功解決這個錯誤。UnsatisfiedDependencyException:創建名爲'welcomeController'的bean時出錯:通過字段'userValidator'表示的不滿意的依賴關係
即時得到下面的錯誤 -
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'welcomeController': Unsatisfied dependency expressed through field 'userValidator'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.config.UserValidator' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
我WelcomeController有自動連接到UserValidator -
@Controller
@RequestMapping("/")
public class WelcomeController {
@Autowired
AuctionItemRepository aucRepository;
@Autowired
UserRepository userRepository;
@Autowired
UserRoleRepository roleRepository;
@Autowired
UserValidator userValidator;
@Autowired
UserService userService;
@Autowired
SecurityService securityService;
// inject via application.properties
@Value("${welcome.message:test}")
private String message = "Hello World";
@RequestMapping(value = "/")
public String welcome(Map<String, Object> model) {
model.put("message", this.message);
return "welcome";
}
Date getTime() {
Timestamp time = new Timestamp(new Date().getTime());
return time;
}
@RequestMapping(value = "/sell", method = RequestMethod.GET)
public String addAuction(Model model, HttpServletRequest request) {
model.addAttribute("newAuction", new AuctionItem());
model.addAttribute("action", "sell");
return "NewAuction";
}
@RequestMapping(value = "/sell", method = RequestMethod.POST)
public String saveAuction(@ModelAttribute("AuctionItem")AuctionItem auction, BindingResult result, ModelMap model){
if(result.hasErrors()){
return "error";
}
// User user = (User) userRepository.findByUsername(getUser());
auction.setAucStartTime(getTime());
aucRepository.save(auction);
// AuctionItem ai = aucRepository.findByOwnerAndStartTime(user, auction.getaStart());
return "redirect:/aucConfirm";
}
@RequestMapping(value = "/aucConfirm", method = RequestMethod.GET)
public String confirmAuction(Model model, HttpServletRequest request) {
return "aucConfirm";
}
@RequestMapping(value = "/register", method = RequestMethod.GET)
public String register(Model model) {
model.addAttribute("userForm", new User());
return "register";
}
@RequestMapping(value = "/register", method = RequestMethod.POST)
public String register(@ModelAttribute("userForm") User userForm, BindingResult bindingResult, Model model) {
userValidator.validate(userForm, bindingResult);
if (bindingResult.hasErrors()) {
return "register";
}
userService.save(userForm);
securityService.autologin(userForm.getUsername(), userForm.getPasswordConfirm());
return "redirect:/";
}
@RequestMapping(value = "/login", method = RequestMethod.GET)
public String login(Model model, String error, String logout) {
if (error != null)
model.addAttribute("error", "Your username and password is invalid.");
if (logout != null)
model.addAttribute("message", "You have been logged out successfully.");
return "login";
}
}
UserValidator類 -
public class UserValidator implements Validator{
@Autowired
private UserService userService;
@Override
public boolean supports(Class<?> aClass) {
return User.class.equals(aClass);
}
@Override
public void validate(Object o, Errors errors) {
User user = (User) o;
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "username", "NotEmpty");
if (user.getUsername().length() < 6 || user.getUsername().length() > 32) {
errors.rejectValue("username", "Size.userForm.username");
}
if (userService.findByUsername(user.getUsername()) != null) {
errors.rejectValue("username", "Duplicate.userForm.username");
}
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "password", "NotEmpty");
if (user.getPass().length() < 8 || user.getPass().length() > 32) {
errors.rejectValue("password", "Size.userForm.password");
}
if (!user.getPasswordConfirm().equals(user.getPass())) {
errors.rejectValue("passwordConfirm", "Diff.userForm.passwordConfirm");
}
}
}
這兩個類以及我的Spring Boot配置和WebSecurityConfig都在包中com.config
任何想法?
您的'UserValidator'似乎沒有用'@ Component'或類似的方式進行註釋。 – chrylis
是的,工作,謝謝! – HazardAGuess