[SpringBoot] 실행 전 데이터 세팅 방법, CommandLineRunner
2023. 3. 20. 18:55ㆍspring
로직을 테스트 해보려고 할 때 매번 데이터를 넣는건 속도도 느려지고 상당히 귀찮다.
이 방법으로 데이터를 미리 세팅해 놓을 수 있다.
[예시 1]
@Configuration
@Profile({"dev", "test"})
// NotProd : 개발환경이 이거나, 테스트환경일 때만 실행
public class NotProd {
@Bean
public CommandLineRunner initData(MemberService memberService, ArticleService articleService) {
return args -> {
// 이 부분은 스프링부트 앱이 실행되고, 본격적으로 작동하기 전에 실행된다.
memberService.join("user1", "1234");
memberService.join("abc", "12345");
memberService.join("test", "12346");
memberService.join("love", "12347");
memberService.join("like", "12348");
memberService.join("giving", "12349");
memberService.join("thanks", "123410");
memberService.join("hello", "123411");
memberService.join("good", "123412");
memberService.join("peace", "123413");
articleService.write("제목1", "내용1");
articleService.write("제목2", "내용2");
};
}
}
[예시2]
@Component
@RequiredArgsConstructor
public class BaseData implements CommandLineRunner {
private final QuestionRepository questionRepository;
private final AnswerRepository answerRepository;
@Override
public void run(String... args) throws Exception {
QuestionEntity question1 = QuestionEntity
.builder()
.subject("test1")
.content("content1")
.build();
questionRepository.save(question1);
QuestionEntity question2 = QuestionEntity
.builder()
.subject("test2")
.content("content2")
.build();
questionRepository.save(question2);
QuestionEntity question3 = QuestionEntity
.builder()
.subject("이름")
.content("이름이뭔가요?")
.build();
questionRepository.save(question3);
AnswerEntity answer = AnswerEntity
.builder()
.question(question3)
.content("홍길동입니다.")
.build();
AnswerEntity savedAnswerEntity = answerRepository.save(answer);
}
'spring' 카테고리의 다른 글
[SpringBoot] 글 삭제했을 때 원래 페이지로 redirect 되게 하기 (0) | 2023.03.31 |
---|---|
[SpringBoot] 하나의 form을 재활용 하기 위한 방법 (ex_등록,수정을 하나의 form으로 <csrf>) (0) | 2023.03.31 |
[SpringBoot] @Builder.Default / 클래스 내에서 필드 초기화 / NullPointException (0) | 2023.03.21 |
[SpringBoot] 쿠키와 세션 (0) | 2023.03.16 |
스프링 DB 테스트 (0) | 2023.02.01 |