본문 바로가기
Spring Boot

마이크로 서비스 구축 - (1)

by 코리늬 2019. 9. 28.

마이크로 서비스 구축 - (1)

스프링 부트 어플리케이션 부팅: BootStrap 클래스 작성

  1. 스프링 부트 어플리케이션을 시작하고 초기화하는데 사용하는 Spring Bootstrap 클래스
  2. 마이크로서비스에서 호출할 수 있는 Http 엔드포인트를 노출하는 Spring Controller 클래스
//스프링 부트 프레임워크에 이 클래스가 프로젝트의 부트스트랩 클래스라고 지시한다.
@SpringBootApplication
public class Application{

    public static void main(String[] args){
        //스프링 부트 서비스를 시작하기 위해 호출한다.
        SpringApplication.run(Application.class, args);
    }
}

 

@SpringBootApplication

  • 스프링 부트는 위 어노테이션이 붙은 클래스가 스프링에서 정의하는 빈(bean)의 출처라고 스프링 컨테이너에 지시한다.
  • 스프링 빈은 다음 클래스를 사용해 정의한다.
1. @Component 또는 @Service, @Repository 어노테이션이 붙은 클래스를 정의한다.
 2. @Configuration 어노테이션이 붙은 클래스에 스프링 빈을 생성하기 위한 @Bean 생성자 메소드를 정의한다.

또한 Application 클래스를 구성 클래스로 지정하고, 자바 클래스 경로에 다른 스프링 빈이 있는지 찾기 위해 모든 클래스를 자동으로 스캔한다.

 

두 번째는 Application 클래스의 main() 메소드다.

SpringApplication.run(Application.class, args)

이 메소드에서의 호출은 스프링 컨테이너를 시작한다.

기억해야하는 부분은 @SpringBootApplication 어노테이션과 해당 Applicaition 클래스를 마이크로서비스의 부트스트랩 클래스로 만든다는 점이다.

따라서 서비스 초기화를 위한 핵심 로직을 이 클래스에 두어야 한다.

 

마이크로서비스의 출입구 만들기: 스프링 부트 컨트롤러

부트스트랩 클래스를 구현했으므로 어떤 일을 수행할 첫 번째 코드를 작성할 준비가 되었다.

이 코드가 바로 Controller 클래스다.

스프링 부트 어플리케이션에서 Controller 클래스는 서비스의 엔드포인트를 노출하고 유입되는 HTTP 요청 데이터를 이 요청을 처리할 자바 메서드와 매핑한다.

@RestController
@RequestMapping(value = "organizations/{orgId}/licenses")
public class LicenseServiceController {
    ...
}

 

@RestController

Restcontroller 어노테이션은 클래스 수준의 어노테이션으로, 스프링 컨테이너에 자바 클래스가 REST 기반 서비스에 사용된다고 알리는 역할을 한다.

서비스에 JSON이나 XML로 전달된 데이터의 직렬화를 자동으로 처리한다.

(기본적으로 @RestController 클래스는 반환할 데이터를 JSON으로 직렬화한다.)

이 어노테이션을 사용하면 Controller 클래스에서 ResponseBody 클래스로 반환할 필요가 없는데, @ResponseBody를 포함하는 @RestController 어노테이션에 의해 모두 처리되기 때문이다.

 

@RequestMapping

RequestMapping 어노테이션은 클래스 또는 메소드 수준의 어노테이션으로 스프링 컨테이너에 해당 HTTP 엔드포인트를 외부에 공개한다고 알리는 데 사용된다.

클래스 수준의 @RequestMapping 어노테이션을 사용하면 그 컨트롤러가 노출하는 모든 엔드포인트의 최상위(root) URL 을 설정할 수 있다.

{orgId}는 모든 호출에서 전달된 orgId를 매개변수화된 URL에 사용될 것을 암시하는 자리 표시자이다.

 

 

별도로 어플리케이션의 상태를 확인하고 싶을 때, 스프링 부트에서는 한 가지 모듈을 제공해준다.

Spring Actuator이다.

어플리케이션을 구동시킨 뒤, 포스트맨을 사용해 GET 방식으로 아래와 같이 호출해 보면

http://localhost:8080/actuator/health

이처럼 UP/DOWN 값으로 현재 상태값을 나타내준다.

정말 편리쓰...

댓글