마이크로 서비스 구축 - (1)
스프링 부트 어플리케이션 부팅: BootStrap 클래스 작성
- 스프링 부트 어플리케이션을 시작하고 초기화하는데 사용하는 Spring Bootstrap 클래스
- 마이크로서비스에서 호출할 수 있는 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 값으로 현재 상태값을 나타내준다.
정말 편리쓰...
'Spring Boot' 카테고리의 다른 글
JPA repository.save is Null (NullPointerException) - feat. @RunWith & @SpringBootTest & @DataJpaTest (2) | 2019.11.13 |
---|---|
스프링부트 Rest API Post 방식 호출하기 - (2) (0) | 2019.10.24 |
스프링부트 Rest API Post 방식 호출하기 - (1) (0) | 2019.10.23 |
마이크로서비스 @PathVariable, @RestController, @EnableEurekaClient, @ HystrixCommand, @EnableCircuitBreaker (1) | 2019.08.31 |
스프링부트 parameterType alias 지정하기 (0) | 2019.05.27 |
댓글