dépendances non satisfaites exprimé par le constructeur dans SpringBoot

Jongwon:

Salut les gars ma version springboot est « 2.2.4.RELEASE ».
Je veux autowire 2 paramètres dans le constructeur. mais il ne ne fonctionne pas.
Mabye je pense que 'passwordEncoder' a un problème ...

voici le code 'UserService.java'.

import kr.co.loosie.foody.domain.User;
import kr.co.loosie.foody.domain.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;

import javax.transaction.Transactional;
import java.util.Optional;



@Service
@Transactional
public class UserService {

private UserRepository userRepository;
private PasswordEncoder passwordEncoder;


@Autowired
public UserService(UserRepository userRepository,
                   PasswordEncoder passwordEncoder) {
    this.userRepository = userRepository;
    this.passwordEncoder = passwordEncoder;
}

public User registerUser(String email, String name, String password) {
    Optional<User> existed = userRepository.findByEmail(email);
    if (existed.isPresent()) {
        throw new EmailExistedException(email);
    }

    String encodedPassword = passwordEncoder.encode(password);

    User user = User.builder()
            .email(email)
            .name(name)
            .password(encodedPassword)
            .level(1L)
            .build();
    return userRepository.save(user);
}



public User authenticate(String email, String password) {
    User user = userRepository.findByEmail(email)
            .orElseThrow(() -> new EmailNotExistedException(email));

    if (!passwordEncoder.matches(password, user.getPassword())) {
        throw new PasswordWrongException();
    }

    return user;
  }
 }

la partie d'erreur est ici.
@Autowired
UserService publique (UserRepository userRepository,
PasswordEncoder passwordEncoder) {
this.userRepository = userRepository;
this.passwordEncoder = passwordEncoder;
}

il a travaillé quand je ne UserReposiotory pour obtenir autowired
mais je mets la PasswordEncoder passwordEncoder ligne, ce n'est pas travaillé. plz me donner un peu d' aide!

c'est un message d'avertissement

Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with         
name 'userService' defined in file [D:\CCC\intellij_ex\foody\foody-customer- 
api\build\classes\java\main\kr\co\loosie\foody\application\UserService.class]: Unsatisfied dependency 
expressed through constructor parameter 1; nested exception is 
org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 
'org.springframework.security.crypto.password.PasswordEncoder' available: expected at least 1 bean 
which qualifies as autowire candidate. Dependency annotations: {}

plz me donner un peu d'aide!

Thomas__:

Message d' erreur indique qu'il n'y a pas de haricots pour org.springframework.security.crypto.password.PasswordEncoder, ce qui signifie que vous n'avez pas défini nulle part.

Vous auriez besoin de quelque chose comme:

@Bean
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }

Dans votre configuration (si la configuration par Java)

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=276123&siteId=1
conseillé
Classement