Создать учетную запись администратора по умолчанию в Spring boot - PullRequest
0 голосов
/ 17 сентября 2018

У меня есть пользовательский объект:

User.java

@Entity
public class user {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@NotNull
@NotBlank
private String firstname;
...

При первом развертывании приложения оно создает эту таблицу в моей базе данных.

Мой вопрос: есть ли способ создать пользователя-администратора с именем вместе с таблицей user, когда она будет создана?

Ответы [ 2 ]

0 голосов
/ 17 сентября 2018

Я предпочитаю всегда избегать сценариев SQL, поэтому я использую интерфейс CommandLineRunner. это пример использования данных пружины, это не рабочий код:

@Component    
public class CommandLineAppStartupRunner implements CommandLineRunner {
    @Autowired
    UserRepository userRepository;

    @Override
    public void run(String...args) throws Exception {
        User admin = new user(firstName);
        userRepository.save(admin);
    }
}

до запуска приложения этот класс будет выполнен.

0 голосов
/ 17 сентября 2018

Вы можете поместить что-то вроде этого в src/main/resources/data.sql:

INSERT INTO users (firstname, password, enabled)
SELECT 'admin', 'secret', TRUE
WHERE NOT EXISTS (SELECT * FROM users WHERE firstname='admin');

Предполагается, что вы используете PostgreSQL для базы данных.

Поскольку я не знаю, какую схему базы данных вы используете, вам придется изменить этот запрос, чтобы он соответствовал вашей схеме, но он должен дать вам основную идею.

Я думаю, вам даже не нужно добавлять какую-либо конфигурацию, чтобы это работало, поскольку Spring автоматически подберет ее и будет использовать для инициализации базы данных, если она находится в нужном каталоге.

Согласно другому ответу на аналогичный вопрос , в Spring Boot 2.x вам нужно будет добавить следующий фрагмент конфигурации для работы:

spring.datasource.initialization-mode=always
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...