CommandLineRunner로 DB에 Dummy DATA 추가

코딩하는범이·2020년 7월 16일
1
post-thumbnail

스프링 웹 개발 중에 매번 데이터를 삽입하고 삭제하는것은 매우 번거러운 일입니다.

저는 CommandLineRunner 라는 인터페이스를 사용해서 미리 데이터를 넣어 보겠습니다.

데이터베이스에 테이블 Entity입니다.

@Entity
@Setter
@Getter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class Account {

    @Id
    @GeneratedValue
    private Long id;

    private String email;

    private String password;

    private String nickName;

}

데이터베이스에 엑세스 하기 위한 Repository입니다.

public interface AccountRepository extends JpaRepository<Account, Long> {

}

DB에 더미 데이터 넣어주는 부분입니다.

@Configuration
@RequiredArgsConstructor
public class DumpDataConfiguration implements CommandLineRunner{

    private final AccountRepository accountRepository;

    @Override
    public void run(String... args) throws Exception {
        if (!accountRepository.findById(1L).isPresent()) {
                  Account account1 = accountRepository.save(Account.builder()
                    .email("admin")
                    .nickName("admin")
                    .password("$2a$10$YWPfzuLkN3WheGyxa/w8Ju7LV433YY4afTyc/4obk8.VAO.9b7EFS")
                    .build());
                    }
           }
}

CommandLineRunner

다음과 같이 CommandLineRunner 인터페이스를 구현한 클래스를 Bean으로 등록시켜주는 어노테이션을 선언해두면 컴포넌트 스캔이되고 구동 시점에 run 메소드의 코드가 실행됩니다.


또한 이렇게 함수 형태로 사용 할 수도 있습니다.

@Configuration
public class DemoAppConfiguration {

    @Bean
    public CommandLineRunner demo(AccountRepository accountRepository) {
        return args -> {
 		if (!accountRepository.findById(1L).isPresent()) {
                     Account account1 = accountRepository.save(Account.builder()
                    	.email("admin")
                    	.nickName("admin")
                    	.password("$2a$10$YWPfzuLkN3WheGyxa/w8Ju7LV433YY4afTyc/4obk8.VAO.9b7EFS")
                    	.build());
      
    	}
    }
}

제대로 값이 들어간 것을 확인 할 수 있습니다.

profile
기록 그리고 기억

0개의 댓글