Ich versuche JHipster Benutzer zu erweitern, so folgte ich das offizielle Tutorial unter:JHipster Userservice - Variable möglicherweise nicht
http://www.jhipster.tech/tips/022_tip_registering_user_with_additional_information.html
Der Punkt ist, dass ich bekam Fehler immer in UserService.java
UserService.java:[61,5] Variable alRepository möglicherweise nicht gewesen sein initialisiert
Unten können Sie UserService.java Code sehen.
inicial
package br.ufrj.g2matricula.service;
import br.ufrj.g2matricula.domain.Authority;
import br.ufrj.g2matricula.domain.User;
import br.ufrj.g2matricula.domain.Aluno;
import br.ufrj.g2matricula.repository.AuthorityRepository;
import br.ufrj.g2matricula.config.Constants;
import br.ufrj.g2matricula.repository.UserRepository;
import br.ufrj.g2matricula.repository.AlunoRepository;
import br.ufrj.g2matricula.repository.search.UserSearchRepository;
import br.ufrj.g2matricula.repository.search.AlunoSearchRepository;
import br.ufrj.g2matricula.security.AuthoritiesConstants;
import br.ufrj.g2matricula.security.SecurityUtils;
import br.ufrj.g2matricula.service.util.RandomUtil;
import br.ufrj.g2matricula.service.dto.UserDTO;
import br.ufrj.g2matricula.web.rest.vm.ManagedUserVM;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.Instant;
import java.time.temporal.ChronoUnit;
import java.util.*;
import java.util.stream.Collectors;
/**
* Service class for managing users.
*/
@Service
@Transactional
public class UserService {
private final Logger log = LoggerFactory.getLogger(UserService.class);
private final UserRepository userRepository;
private final AlunoRepository alRepository;
private final PasswordEncoder passwordEncoder;
private final UserSearchRepository userSearchRepository;
private final AlunoSearchRepository alSearchRepository;
private final AuthorityRepository authorityRepository;
public UserService(UserRepository userRepository, PasswordEncoder passwordEncoder, UserSearchRepository userSearchRepository, AuthorityRepository authorityRepository) {
this.userRepository = userRepository;
this.passwordEncoder = passwordEncoder;
this.userSearchRepository = userSearchRepository;
this.authorityRepository = authorityRepository;
}
/*public UserService(UserRepository userRepository, AlunoRepository alunoRepository, PasswordEncoder passwordEncoder, UserSearchRepository userSearchRepository, AuthorityRepository authorityRepository) {
this.userRepository = userRepository;
this.passwordEncoder = passwordEncoder;
this.userSearchRepository = userSearchRepository;
this.authorityRepository = authorityRepository;
this.alRepository = alunoRepository;
}*/
create Methode
public User createUser(String login, String password, String firstName, String lastName, String email, String langKey, Long cpf) {
User user = new User();
Authority authority = authorityRepository.findOne(AuthoritiesConstants.USER);
Set<Authority> authorities = new HashSet<>();
user.setLogin(login);
user.setFirstName(firstName);
user.setLastName(lastName);
user.setEmail(email);
//user.setImageUrl(userDTO.getImageUrl());
if (langKey == null) {
user.setLangKey(Constants.DEFAULT_LANGUAGE); // default language
} else {
user.setLangKey(langKey);
}
authorities.add(authority);
user.setAuthorities(authorities);
String encryptedPassword = passwordEncoder.encode(RandomUtil.generatePassword());
user.setPassword(encryptedPassword);
user.setResetKey(RandomUtil.generateResetKey());
user.setResetDate(Instant.now());
user.setActivated(true);
userRepository.save(user);
userSearchRepository.save(user);
log.debug("Created Information for User: {}", user);
//update Aluno class
Aluno al = new Aluno();
al.setUsuario(user);
al.setCpf(cpf);
alRepository.save(al);
alSearchRepository.save(al);
log.debug("Created Information for UserExtra: {}", al);
return user;
}
Ich kann nicht nur alRepository = new AlunoRepository() gesetzt, weil AlunoRepository eine abstrakte Klasse und nicht instanziiert werden kann .
Was empfehlen Sie zu tun?
richtige Antwort, Lucas Santos de Paula Sie profitieren vom Lernen mehr über Dependency Injection in Spring-Framework zu injizieren vergessen, siehe http://www.baeldung.com/ Konstruktor-Injektion-im Frühling –
Sie meinen so? 'public UserService (UserRepository userRepository, AlunoRepository alunoRepository, PasswordEncoder passwordEncoder, UserSearchRepository userSearchRepository, AuthorityRepository authorityRepository) { this.userRepository = userRepository; this.passwordEncoder = passwordEncoder; this.userSearchRepository = userSearchRepository; this.authorityRepository = authorityRepository; this.alRepository = alunoRepository; } ' –
Ich glaube, es wird viel besser für Sie über Frühling Rahmenbohne Injektion vor der Verwendung Zhipster wissen. – ismailzakky