Springboot에서 서버 구동 시점에 초기화작업으로 무엇인가를 넣고 싶다면 사용할 수 있는 방법 중 하나가
CommandLineRunner인터페이스를 상속받는 것이다.
(상속 안하고 다른 방법으로 해봄,,,)
@SpringBootApplication 어노테이션이 붙어있는 부트구동 클래스에 CommandLineRunner를 implements
하고 run(String... strings)를 Override한다.
그리고 해당 run()에 애플리케이션의 초기작업(빈등록 과정 등등)이후 실행할 로직을 작성해주면 된다.
예제 코드는 애플리케이션에 초기데이터를 삽입하는 코드이다.
- DemoApplication.java (실행코드)-
- 참고 -> DmPTContestDump.java (덤프코드) -
public class DmPTContestDump {
/**
* 알고리즘 : Algorithm
* 디자인 : Design
* 임베디드 : Embedded
* 빅데이터 : Bigdata
* 모바일 : Mobile
* 게임 : Game
* 블록체인 : Blockchain
* 해킹보안 : Security
*/
//전체
//대학부
//청소년부
public static void insertContestDump(ContestRepository contestRepo) {
/**
* Algorithm
*/
{
Contest contest = new Contest();
contest.setName("제4회 국민대학교 알고리즘 대회");
contest.setIntro("국민*인의 소프트웨어에서 국민 모두의 소프트웨어로 제4회 국민대학교 알고리즘 대회는 소프트웨어와 알고리즘, 프로그래밍에 관심 있는 고등학생들이라면 누구나 참가할 수 있는 새로운 도전의 장입니다.국민대학교 소프트웨어융합대학은 본 대회를 통하여 창의적인 소프트웨어 개발능력을 보유한 고등학생을 발굴, 4차 산업혁명의 초석으로 육성하고자 합니다.본 대회는 국민대학교 소프트웨어융합대학과 SW중심대학사업단에서 주관하며 ㈜그렙(Grepp, Inc.)에서 후원합니다.");
contest.setField("Algorithm");
contest.setDepartment("청소년부");
contest.setOrganizationName("국민대학교"); //주최자
contest.setOrganizationArea("서울");
contest.setSubStart(LocalDateTime.of(2019, 7, 1, 0, 0, 0)); //접수시작
contest.setSubEnd(LocalDateTime.of(2019, 5, 10, 0, 0, 0)); //접수마감
contest.setOnStart(LocalDateTime.of(2019, 6, 14, 0, 0, 0)); //시작날짜 (접수 or 아애 시작 날짜)
contest.setOnEnd(LocalDateTime.of(2019, 8, 24, 0, 0, 0)); //종료날짜 (아애 끝나는 날짜)
contest.setPreStart(LocalDateTime.of(2019, 1, 1, 0, 0, 0)); //예선시작
contest.setPreEnd(LocalDateTime.of(2019, 1, 1, 0, 0, 0)); //예선종료
contest.setLikeNum(0);
contest.setImageURL("https://www.kookmin.ac.kr/storage/CALENDAR/event/1560499584.png"); //이미지
contest.setHomepageURL("http://softwarecontest.kookmin.ac.kr/"); //홈페이지url
contest.setAttachedFileURL("");
contestRepo.save(contest);
}
/**
* Design
*/
{
Contest contest = new Contest();
contest.setName("KOTRA 해외전시 한국관 공간디자인 공모전");
contest.setIntro("디자인 전문가, 전공 학생 등의 창의적이고 참신한 의견을 수렴하여 한국관 디자인 개선에 활용하기 위해 글로벌 전시 트렌드 및 한국의 상징성을 반영한 한국관 디자인 개발 공모를 진행합니다.");
contest.setField("Design");
contest.setDepartment("대학부");
contest.setOrganizationName("KOTRA"); //주최자
contest.setOrganizationArea("서울");
contest.setSubStart(LocalDateTime.of(2019, 9, 19, 0, 0, 0)); //접수시작
contest.setSubEnd(LocalDateTime.of(2019, 10, 31, 0, 0, 0)); //접수마감
contest.setOnStart(LocalDateTime.of(2019, 9, 19, 0, 0, 0)); //시작날짜 (접수 or 아애 시작 날짜)
contest.setOnEnd(LocalDateTime.of(2019, 11, 29, 0, 0, 0)); //종료날짜 (아애 끝나는 날짜)
contest.setPreStart(LocalDateTime.of(2019, 1, 1, 0, 0, 0)); //예선시작
contest.setPreEnd(LocalDateTime.of(2019, 1, 1, 0, 0, 0)); //예선종료
contest.setLikeNum(0);
contest.setImageURL("https://www.wevity.com/upload/contest/20190923153518_307d479b.jpg"); //이미지
contest.setHomepageURL("http://www.allcomm.co.kr/"); //홈페이지url
contest.setAttachedFileURL("");
contestRepo.save(contest);
}
}
}
'■ Spring + Boot' 카테고리의 다른 글
[Spring] @RequestParam과 @PathVariable (0) | 2020.08.30 |
---|---|
[Spring] @pathVariable 어노테이션 (0) | 2020.08.30 |
[Spring] 구조 1차, 구조 2차 (연습한거) - 코드 (0) | 2020.08.28 |
[Spring] 구조 1차, 구조 2차 (연습한거) (0) | 2020.08.27 |
[Spring] 컨트롤러(Controller) 사용법 ★ (0) | 2020.08.26 |