스프링 구동 시점에 특정 코드를 자동으로 실행시키는 방법은 2가지가 있음
- Command Line Runner
- Application Runner
1. Command Line Runner
1-1. Command Line Runner 란
- Spring Application 내에 Bean이 포함될 때 Bean이 실행되어야 함을 나타내는데 사용되는 인터페이스
1-2. Command Line Runner 사용 방법
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;
import java.util.Arrays;
@Component
public class CommandLineRunnerExample implements CommandLineRunner {
@Override
public void run(String... args) throws Exception{
System.out.println("Arrays.toString(args) = " + Arrays.toString(args));
System.out.println("테스트!");
}
}
- 스프링 구동 시점에 실행시키고 싶은 코드를 작성한 클래스에 @Component 어노테이션 선언
- public void run (String... args) 를 오버라이딩 해서 사용 (@Override)
1-3. 실행 결과
- 넘겨준 문자열이 없기 때문에 []로만 출력됨
- 문자열이 넘어가는 지 검증하기 위해 터미널로 실행
- 터미널에서 Jar 파일 실행 (문자열 포함)
java -jar demo-0.0.1-SNAPSHOT.jar "테스트1" abc test 123
- 터미널에서 실행 결과 => 넘겨준 문자열들을 포함하여 출력함을 확인
2. Application Runner
2-1. Application Runner 란
- Command Line Runner와 동일하게 스프링 구동시점에 run 메서드를 실행하는 인터페이스
- 파라미터로 단순 String 배열 대신 Application Arguments에 접근해야 하는 경우 사용
2-2. Application Runner 사용 방법
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;
import java.util.Arrays;
@Component
public class ApplicationRunnerExample implements ApplicationRunner {
@Override
public void run(ApplicationArguments args) throws Exception{
System.out.println("Arrays.toString(args) = " + Arrays.toString(args.getSourceArgs()));
System.out.println("테스트!");
}
}
- 스프링 구동 시점에 실행시키고 싶은 코드를 작성한 클래스에 @Component 어노테이션 선언
- public void run (ApplicationArguments args)를 오버라이딩해서 사용 (@Override)
2-3. 실행 결과
- 위에서와 마찬가지로 넘겨지는 ApplicationArguments 를 확인해보기 위해 터미널에서 실행
- 터미널에서 Jar 파일 실행 (문자열 포함)
java -jar demo-0.0.1-SNAPSHOT.jar ApplicationRunnerTest 테스트2 456
- 터미널에서 실행 결과 => 넘겨준 문자열들을 포함하여 출력함을 확인
https://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/CommandLineRunner.html
https://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/ApplicationRunner.html
'Spring Boot' 카테고리의 다른 글
[Spring Boot] 페이징 기능 구현 ( + 페이징, 정렬, 검색, 에러 메시지 포함 예제) (1) | 2024.01.03 |
---|---|
[SpringBoot] MySQL 연동 (maven, gradle) (0) | 2023.12.12 |
[Spring Boot] Gradle 빌드해서 Jar 파일 생성, 실행 (0) | 2023.11.22 |
[Spring Boot] Port 8080 was already in use. 에러 해결 (2) | 2023.11.22 |
[Spring Boot] error: invalid source release: 21 에러 해결 (1) | 2023.11.22 |