Создать пользователя по умолчанию во время выполнения весной MVC с помощью PostContruct Java - PullRequest
0 голосов
/ 12 июня 2019

Необходимо создать профиль пользователя по умолчанию при запуске моего веб-приложения [Spring MVC]:

- с помощью postConstruct

- Создать пользователя по умолчанию при запуске

-- не создавать того же пользователя при следующем запуске

- Пользователь по умолчанию, например, admin, с другой информацией, такой как Имя, Фамилия, DOB и т. д., и он должен храниться в базе данных.

OfКонечно, я должен следовать правильному шаблону mvc, такому как контроллер, модель, сервис, хранилище, конфигурация Spring, конфигурация безопасности Spring.

Пожалуйста, не публикуйте код в spring-boot или JSON.Любая помощь будет высоко оценена и заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 14 июня 2019

Вопрос имеет простое решение после большого количества исследований. Я пришел к выводу, что с помощью @PostConstruct все можно создать на этапе инициализации приложения.Заяц - это то, что я нашел:

    @Component
public class DbInit {

    @Autowired
    private UserRepository userRepository;

    @PostConstruct
    private void postConstruct() {
        User admin = new User("admin", "admin password");
        User normalUser = new User("user", "user password");
        userRepository.save(admin, normalUser);
    }
}

Ссылка от: https://www.baeldung.com/spring-postconstruct-predestroy Благодаря этому сайту есть отличное место для изучения.

0 голосов
/ 12 июня 2019

Создайте вызов класса SecurityUtil, как показано ниже.

import org.springframework.security.authentication.encoding.Md5PasswordEncoder;

import java.util.HashSet;
import java.util.Set;

public class SecurityUtil {

    public static User getFirstTimeUser() {
        User defaultUser = new User();
        defaultUser.setActive(true);
        defaultUser.setUserId("admin");
        defaultUser.setFirstName("First Time");
        defaultUser.setLastName("Admin");
        defaultUser.setId(0L);
        defaultUser.setPassword(new Md5PasswordEncoder().encodePassword("admin", Constants.SALT));
        //Set<Role> roles = new HashSet<Role>();
        Role role = new Role();
        role.setId(0L);
        role.setRoleName("ROLE_ADMIN");
        //roles.add(role);
        defaultUser.setRole(role);
        return defaultUser;
    }

Затем вызовите этот метод из класса Userservice, который реализован из UserDetails Spring.

@Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        UserFilter filter = new UserFilter();
        filter.setUserId(username);
        List<User> users = userDAO.find(filter);
        if (users != null && users.size() == 1) {
            return users.get(0);
        } else {
            if (userDAO.count() == 0) {
                return getFirstTimeUser();
            } else {
                throw new UsernameNotFoundException("Username Not Found Exception");
            }
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...