J'essaie de sauvegarder les données utilisateur via le contrôleur de repos vers la base de données en utilisant un service et un référentiel.NullPointerException lors de l'accès au Repository à partir du Service dans Spring4
Contrôleur
@RestController
@RequestMapping(path="/users")
public class UserController {
private UserService userService;
@Autowired
public UserController(UserService userService) {
this.userService = userService;
}
@RequestMapping(method= RequestMethod.POST, path="/create")
@ResponseStatus(HttpStatus.CREATED)
@ResponseBody
public void createUser(@RequestBody @Validated UserDto userDto){
userService.createUser(userDto.getUsername(), userDto.getEmail(), userDto.getPassword());
}
}
service
@Service
public class UserService {
private UserRepository userRepository;
private BCryptPasswordEncoder encoder;
@Autowired
public UserService(UserRepository userRepository){
this.userRepository = userRepository;
}
public void createUser(String username, String email,String password){
userRepository.save(new User(username, email, encoder.encode(password))); //line 25
}
public Optional<User> getByUsername(String username){
return userRepository.findByusername(username);
}
}
dépôt
@Repository
public interface UserRepository extends JpaRepository<User, Integer> {
Optional<User> findByusername(String username);
}
J'envoie une requête POST à cette url http://localhost:8080/users/create avec les données ci-dessous
{
"username": "testusername",
"password": "password123",
"passwordRepeat": "password123",
"email": "[email protected]",
"emailRepeat": "[email protected]"
}
Voici l'exception que je reçois quand je le fais,
java.lang.NullPointerException: null
at com.mportal.ec.services.UserService.createUser(UserService.java:25)
at com.mportal.ec.web.UserController.createUser(UserController.java:33)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
Je ne peux pas comprendre la raison ici. aidez s'il vous plaît.
userService utilisateur userService rendre autowired –
Je pense que votre 'encoder' n'est pas initialisé, alors autowire il – Afridi
@DeedarAliBrohi service était déjà autowired. Le problème était avec l'encodeur. – Harshakj89