Wenn ich meine Anwendung zu starten bekomme ich diesen Fehler in meinem stacktraceverschachtelte Ausnahme ist NoSuchBeanDefinitionException: keine passenden Bean vom Typ [com.springfoundation.service.SecurityService]
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [com.springfoundation.service.SecurityService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations:
dies ist der Code ich in meinem Frühjahr habe Sicherheit class.java
public interface SecurityService {
String findLoggedInUsername();
void autologin(String username, String password);
}
dies ist der Code, den ich von der Schnittstelle Implementierer haben
public class SecurityServiceImpl implements SecurityService {
@Autowired
private AuthenticationManager authenticationManager;
@Autowired
private UserDetailsService userDetailsService;
private static final Logger logger = LoggerFactory.getLogger(SecurityServiceImpl.class);
@Override
public String findLoggedInUsername() {
Object userDetails = SecurityContextHolder.getContext().getAuthentication().getDetails();
if (userDetails instanceof UserDetails) {
return ((UserDetails)userDetails).getUsername();
}
return null;
}
@Override
public void autologin(String username, String password) {
UserDetails userDetails = userDetailsService.loadUserByUsername(username);
UsernamePasswordAuthenticationToken usernamePasswordAuthenticationToken = new UsernamePasswordAuthenticationToken(userDetails, password, userDetails.getAuthorities());
authenticationManager.authenticate(usernamePasswordAuthenticationToken);
if (usernamePasswordAuthenticationToken.isAuthenticated()) {
SecurityContextHolder.getContext().setAuthentication(usernamePasswordAuthenticationToken);
logger.debug(String.format("Auto login %s successfully!", username));
}
}
der Code in meinem contoller wird unter Ausnutzung der Federsicherheitsklasse I gezeigt oben
angegeben@Controller
public class UserController {
@Autowired
private UserService userService;
@Autowired
private SecurityService securityService;
ich die obige Erklärung noch
innerhalb der Controller-Klasse zu einem Mapping bin mit@RequestMapping(value = "/registration", method = RequestMethod.POST)
public String registration(@ModelAttribute("userForm") User userForm, BindingResult bindingResult, Model model) {
userValidator.validate(userForm, bindingResult);
if (bindingResult.hasErrors()) {
return "registration";
}
userService.save(userForm);
securityService.autologin(userForm.getUsername(), userForm.getPasswordConfirm());
return "redirect:/welcome";
}
diesem die komplette stacktrace meiner Frage, die ich zur Zeit
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private
com.springfoundation.service.SecurityService com.springfoundation.controller.UserController.securityService;
nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type
[com.springfoundation.service.SecurityService] found for dependency: expected at least 1 bean which qualifies
as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:513) ~[spring-beans-3.1.4.RELEASE.jar:3.1.4.RELEASE]
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:92) ~[spring-beans-3.1.4.RELEASE.jar:3.1.4.RELEASE]
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:284) ~[spring-beans-3.1.4.RELEASE.jar:3.1.4.RELEASE]
... 22 common frames omitted
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [com.springfoundation.service.SecurityService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
Bitte bin vor, was falsch sein könnte, dass mein Code die obigen Fehler angezeigt werden
SecurityServiceImpl ist nicht mit '@ Component' (oder '@ Service') annotiert, es handelt sich also nicht um eine Spring-Bean. –
Eigentlich habe ich es in meinem Code, @Service öffentliche Klasse UserServiceImpl implementiert UserService { – Blaze
Der Fehler ist versteckt in was Sie nicht gepostet haben: Was ist das Paket wird gescannt? Was ist das Paket Ihrer Implementierung? Erweitert es die korrekte Schnittstelle? –