[SPRING] SpringApplication.run main 메소드
SPRINGSpringApplication.run main 메소드
Eclipse에서 Spring Starter 프로젝트 템플릿을 사용하여 프로젝트를 만들었습니다.
자동으로 Application 클래스 파일을 만들었고 해당 경로가 POM.xml 파일의 경로와 일치하므로 모두 정상입니다. 다음은 Application 클래스입니다.
@Configuration
@ComponentScan
@EnableAutoConfiguration
public class Application {
public static void main(String[] args) {
//SpringApplication.run(ReconTool.class, args);
ReconTool.main(args);
}
}
이것은 빌드하고있는 명령 행 응용 프로그램이며 실행하려면 SpringApplication.run 행을 주석 처리하고 다른 클래스의 main 메소드를 추가하여 실행해야합니다. 이 빠른 jerry-rig 외에도 Maven을 사용하여 빌드 할 수 있으며 Spring 애플리케이션, 일종의 것으로 실행됩니다.
그러나 나는 그 라인을 주석 처리 할 필요가 없으며 전체 Spring 프레임 워크를 사용할 것이다. 어떻게해야합니까?
해결법
-
==============================
1.이 메서드는 전체 Spring Framework를 시작하기 때문에 Application.run ()을 실행해야합니다. 아래의 코드는 main ()을 Spring Boot와 통합합니다.
이 메서드는 전체 Spring Framework를 시작하기 때문에 Application.run ()을 실행해야합니다. 아래의 코드는 main ()을 Spring Boot와 통합합니다.
@Configuration @ComponentScan @EnableAutoConfiguration public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
@Component public class ReconTool implements CommandLineRunner { @Override public void run(String... args) throws Exception { main(args); } public static void main(String[] args) { // Recon Logic } }
이 방법으로 인해 스프링이 완전히 구성되지 않았습니다 (구성 요소 스캔 등 없음). run ()에 정의 된 bean 만 작성됩니다 (ReconTool).
프로젝트 예 : https://github.com/mariuszs/spring-run-magic
-
==============================
2.사용 :
사용 :
@ComponentScan @EnableAutoConfiguration public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); //do your ReconTool stuff } }
모든 상황에서 작동합니다. IDE에서 응용 프로그램을 시작하든 빌드 도구에서 시작하든 상관 없습니다.
maven을 사용하면 mvn을 사용하십시오. spring-boot : run
gradle에서는 gradle bootRun이됩니다.
run 메소드에서 코드를 추가하는 대신 CommandLineRunner를 구현하는 Spring Bean을 사용하는 것이 좋습니다. 그 모습은 다음과 같습니다.
@Component public class ReconTool implements CommandLineRunner { @Override public void run(String... args) throws Exception { //implement your business logic here } }
Spring의 공식 가이드 저장소에서이 가이드를 확인하십시오.
전체 스프링 부트 문서는 여기에서 찾을 수 있습니다.
-
==============================
3.한 가지 더 많은 방법은 응용 프로그램을 확장하는 것입니다 (응용 프로그램이 부모를 상속하고 사용자 지정하는 것이므로). 그것은 부모와 그 commandlinerunner를 자동으로 호출합니다.
한 가지 더 많은 방법은 응용 프로그램을 확장하는 것입니다 (응용 프로그램이 부모를 상속하고 사용자 지정하는 것이므로). 그것은 부모와 그 commandlinerunner를 자동으로 호출합니다.
@SpringBootApplication public class ChildApplication extends ParentApplication{ public static void main(String[] args) { SpringApplication.run(ChildApplication.class, args); } }
from https://stackoverflow.com/questions/24271705/springapplication-run-main-method by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 왜 샘물이없는거야? 3.2.4. 방출 항아리? (0) | 2019.03.13 |
---|---|
[SPRING] Spring 부트 (JPA 포함) : @Entity를 다른 패키지로 이동 (0) | 2019.03.13 |
[SPRING] Spring 보안은 HttpSecurity를 사용하여 url과 메소드에 대한 요청을 승인한다. (0) | 2019.03.13 |
[SPRING] Spring 데이터 findBy / findAllBy 간의 JPA 차이점 (0) | 2019.03.13 |
[SPRING] 어떻게 Mockito가 주입 된 모의 객체의 메소드에 전달 된 인수를 캡처 할 수 있습니까? (0) | 2019.03.13 |