programing

Spring Boot 콘솔 기반 응용 프로그램 구조

lastmoon 2023. 3. 13. 20:46
반응형

Spring Boot 콘솔 기반 응용 프로그램 구조

간단한 Spring Boot 콘솔 기반 응용 프로그램을 개발하는 경우 메인 실행 코드 배치가 불분명합니다.메서드에 배치해야 합니까?아니면 메인 어플리케이션클래스가 인터페이스를 구현하고 코드를 메서드에 배치해야 합니까?

문맥으로 예를 들겠습니다.다음과 같은 [초급] 어플리케이션(인터페이스, Spring 스타일로 코드화)이 있다고 합니다.

어플.자바

public class Application {

  @Autowired
  private GreeterService greeterService;

  public static void main(String[] args) {
    // ******
    // *** Where do I place the following line of code
    // *** in a Spring Boot version of this application?
    // ******
    System.out.println(greeterService.greet(args));
  }
}

GreeterService.java(인터페이스)

public interface GreeterService {
  String greet(String[] tokens);
}

GreeterServiceImpl.java(실장 클래스)

@Service
public class GreeterServiceImpl implements GreeterService {
  public String greet(String[] tokens) {

    String defaultMessage = "hello world";

    if (args == null || args.length == 0) {
      return defaultMessage;
    }

    StringBuilder message = new StringBuilder();
    for (String token : tokens) {
      if (token == null) continue;
      message.append(token).append('-');
    }

    return message.length() > 0 ? message.toString() : defaultMessage;
  }
}

의 동등한 Spring Boot 버전은 다음과 같습니다.GreeterServiceImpl.java(실장 클래스)

@EnableAutoConfiguration
public class Application
    // *** Should I bother to implement this interface for this simple app?
    implements CommandLineRunner {

    @Autowired
    private GreeterService greeterService;

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
        System.out.println(greeterService.greet(args)); // here?
    }

    // Only if I implement the CommandLineRunner interface...
    public void run(String... args) throws Exception {
        System.out.println(greeterService.greet(args)); // or here?
    }
}

표준 로더가 있어야 합니다.

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

를 실장합니다.CommandLineRunner와 접촉하다.@Component주석

    @Component
    public class MyRunner implements CommandLineRunner {

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

      }
   }

@EnableAutoConfiguration일반적인 Spring Boot 매직이 실행됩니다.

갱신:

@jeton이 시사하는 바와 같이 최신 Springboot는 스트레이트를 구현하고 있습니다.

spring.main.web-application-type=none
spring.main.banner-mode=off

72.2의 문서를 참조해 주세요.

언급URL : https://stackoverflow.com/questions/28199999/how-does-a-spring-boot-console-based-application-work

반응형