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);
		}
    }
  }