Spring - 초기화 용 루트 계정 생성하기

TopOfTheHead·2026년 7월 23일

Spring

목록 보기
17/17
  • application.yml
spring:
  config:
    import: optional:file:.env.development[.properties]
custom:
  rootuser:
    email: ${INITIAL_ADMIN_EMAIL}
    password: ${INITIAL_ADMIN_PASSWORD}
    username: ${INITIAL_ADMIN_USER_NAME}
  • .env.development
INITIAL_ADMIN_EMAIL=wjdtn747@naver.com
INITIAL_ADMIN_PASSWORD=wjdtn3902
INITIAL_ADMIN_USER_NAME=RootUser
  • @ConfigurationProperties 클래스 정의
    진입점 클래스@ConfigurationPropertiesScan 지정 및 해당 클래스 정의
@Getter
@Setter
@ConfigurationProperties(prefix = "custom.rootuser")
public class RootUserProperties {
    private String email;
    private String password;
    private String username;
}
  • DataInit 클래스 정의
@Configuration
@RequiredArgsConstructor
public class DataInitConfig {
    private final EmailWhiteListRepository emailWhiteListRepository;
    private final PasswordEncoder passwordEncoder;
    private final RootUserProperties rootUserProperties;
    @Bean
    @Transactional
    CommandLineRunner init(UserRepository userRepository) {
        return args -> {
            if (userRepository.count() < 1) { // 중복 방지
                User build1 = User.builder()
                        .name(rootUserProperties.getUsername())
                        .nickname("정수리")
                        .major(Major.BACK_END)
                        .email(rootUserProperties.getEmail())
                        .password(passwordEncoder.encode(rootUserProperties.getPassword()))
                        .build();
                build1.updateRole(Role.SUPER_ADMIN);
                userRepository.save(build1);
                emailWhiteListRepository.save(
                        EmailWhiteList.builder()
                                .email("wjdtn747@gmail.com")
                                .major(Major.BACK_END)
                                .name("이정수")
                                .build()
                );
            }
        };
    }
}
profile
공부기록 블로그

0개의 댓글