2017-12-02 24 views
0
initialisiert wurden

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?

Antwort

2

Ich denke, u alrepository Bohne in Ihrem Userservice Konstruktor

+1

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 –

+0

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; } ' –

+1

Ich glaube, es wird viel besser für Sie über Frühling Rahmenbohne Injektion vor der Verwendung Zhipster wissen. – ismailzakky

Verwandte Themen