programing

Spring Application.run 메인메서드

goodcopy 2023. 3. 19. 20:21
반응형

Spring Application.run 메인메서드

스프링 스타터 프로젝트 템플릿을 사용하여 이클립스에서 프로젝트를 만들었습니다.

Application 클래스 파일이 자동으로 생성되고 이 경로는 POM.xml 파일의 경로와 일치하므로 모든 것이 정상입니다.어플리케이션 클래스는 다음과 같습니다.

@Configuration
@ComponentScan
@EnableAutoConfiguration
public class Application {

    public static void main(String[] args) {
        //SpringApplication.run(ReconTool.class, args);  
        ReconTool.main(args);
    }
}

이것은 제가 만들고 있는 명령줄 앱입니다.실행하려면 Spring Application.run 행을 코멘트하고 다른 클래스의 메인 메서드를 추가하여 실행해야 합니다.이 퀵 제리 리그 말고도 메이븐을 사용해서 만들 수 있고 스프링 어플리케이션으로 동작합니다.

단, 이 행을 코멘트할 필요는 없으며, 완전한 스프링 프레임워크를 사용하고 싶습니다.이거 어떻게 해?

뛰어가야 해SpringApplication.run()왜냐하면 이 방법은 스프링 프레임워크 전체를 시작하기 때문입니다.아래 코드는 다음과 같습니다.main()Spring Boot을 클릭합니다.

Application.java

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

ReconTool.java

@Component
public class ReconTool implements CommandLineRunner {

    @Override
    public void run(String... args) throws Exception {
        main(args);
    }

    public static void main(String[] args) {
        // Recon Logic
    }
}

그거 좋지SpringApplication.run(ReconTool.class, args)

이러한 방식의 스프링은 완전히 구성되지 않았기 때문입니다(구성 요소 스캔 등이 없음).run()에서 정의된 bean만 생성됩니다(ReconTool).

프로젝트 예: https://github.com/mariuszs/spring-run-magic

사용방법:

@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 bootRun

실행 방식으로 코드를 추가하는 대안으로 Spring Bean을 사용하는 것이 있습니다.CommandLineRunner다음과 같이 됩니다.

@Component
public class ReconTool implements CommandLineRunner {

    @Override
    public void run(String... args) throws Exception {
       //implement your business logic here
    }
}

Spring 공식 가이드 저장소에서 이 가이드를 확인하십시오.

스프링 부트 매뉴얼은 여기를 참조하십시오.

또 하나의 방법은 애플리케이션을 확장하는 것입니다(부모를 상속하고 커스터마이즈하는 어플리케이션과 같음).부모 및 명령어를 자동으로 호출합니다.

@SpringBootApplication
public class ChildApplication extends ParentApplication{
    public static void main(String[] args) {
        SpringApplication.run(ChildApplication.class, args);
    }
}

언급URL : https://stackoverflow.com/questions/24271705/springapplication-run-main-method

반응형