1. 개요
이 튜토리얼에서는 Apache Meecrowave 프레임 워크 의 기본 기능을 살펴 봅니다 .
Meecrowave는 Apache의 경량 마이크로 서비스 프레임 워크 로 CDI, JAX-RS 및 JSON API와 매우 잘 작동합니다. 설정 및 배포가 매우 간단합니다. 또한 Tomcat, Glassfish, Wildfly 등과 같은 무거운 애플리케이션 서버를 배포하는 번거 로움을 제거합니다.
2. Maven 의존성
Meecrowave를 사용하기 위해 pom.xml에 의존성을 정의 해 보겠습니다 .
<dependency>
<groupId>org.apache.meecrowave</groupId>
<artifactId>meecrowave-core</artifactId>
<version>1.2.1</version>
</dependency>
Maven Central 에서 최신 버전을 확인하십시오 .
3. 단순 서버 시작
Meecrowave 서버를 시작하려면 main 메서드를 작성하고 Meecrowave 인스턴스를 만들고 main bake () 메서드를 호출 하기 만하면됩니다 .
public static void main(String[] args) {
try (Meecrowave meecrowave = new Meecrowave()) {
meecrowave.bake().await();
}
}
애플리케이션을 배포 패키지로 패키징하는 경우이 기본 방법이 필요하지 않습니다. 이후 섹션에서 이에 대해 살펴 보겠습니다. 메인 클래스는 IDE에서 애플리케이션을 테스트 할 때 유용합니다.
장점으로 IDE에서 개발하는 동안 메인 클래스를 사용하여 애플리케이션을 실행하면 코드 변경으로 자동으로 다시로드되므로 테스트를 위해 서버를 반복해서 다시 시작해야하는 번거 로움을 줄일 수 있습니다.
Java 9를 사용 하는 경우 VM에 javax .xml.bind 모듈을 추가하는 것을 잊지 마십시오 .
--add-module javax.xml.bind
이 방법으로 서버를 생성하면 기본 구성으로 시작됩니다. Meecrowave.Builder 클래스를 사용하여 프로그래밍 방식으로 기본 구성을 업데이트 할 수 있습니다 .
Meecrowave.Builder builder = new Meecrowave.Builder();
builder.setHttpPort(8080);
builder.setScanningPackageIncludes("com.baeldung.meecrowave");
builder.setJaxrsMapping("/api/*");
builder.setJsonpPrettify(true);
그리고 서버를 베이킹하는 동안 이 빌더 인스턴스를 사용하십시오 .
try (Meecrowave meecrowave = new Meecrowave(builder)) {
meecrowave.bake().await();
}
여기에는 더 많은 구성 가능한 속성이 있습니다 .
4. REST 끝점
이제 서버가 준비되면 몇 가지 REST 엔드 포인트를 생성 해 보겠습니다.
@RequestScoped
@Path("article")
public class ArticleEndpoints {
@GET
public Response getArticle() {
return Response.ok().entity(new Article("name", "author")).build();
}
@POST
public Response createArticle(Article article) {
return Response.status(Status.CREATED).entity(article).build();
}
}
REST 엔드 포인트를 생성하기 위해 주로 JAX-RS 어노테이션을 사용하고 있습니다. 여기에서 JAX-RS에 대해 자세히 알아보십시오 .
다음 섹션에서는 이러한 엔드 포인트를 테스트하는 방법을 살펴 보겠습니다.
5. 단위 테스트
Meecrowave로 작성된 REST API 용으로 단위 테스트 케이스를 작성하는 것은 어노테이션이 달린 JUnit 테스트 케이스를 작성하는 것만 큼 간단합니다.
먼저 pom.xml에 테스트 의존성을 추가해 보겠습니다 .
<dependency>
<groupId>org.apache.meecrowave</groupId>
<artifactId>meecrowave-junit</artifactId>
<version>1.2.1</version>
<scope>test</scope>
</dependency>
최신 버전을 보려면 Maven Central을 확인하세요 .
또한 테스트를 위해 OkHttp 를 HTTP 클라이언트로 추가해 보겠습니다 .
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>3.10.0</version>
</dependency>
이제 의존성이 준비되었으므로 계속해서 테스트를 작성해 보겠습니다.
@RunWith(MonoMeecrowave.Runner.class)
public class ArticleEndpointsTest {
@ConfigurationInject
private Meecrowave.Builder config;
private static OkHttpClient client;
@BeforeClass
public static void setup() {
client = new OkHttpClient();
}
@Test
public void whenRetunedArticle_thenCorrect() {
String base = "http://localhost:" + config.getHttpPort();
Request request = new Request.Builder()
.url(base + "/article")
.build();
Response response = client.newCall(request).execute();
assertEquals(200, response.code());
}
}
테스트 케이스를 작성하는 동안 테스트 클래스에 MonoMeecrowave.Runner 클래스 로 어노테이션을 달고 구성도 삽입하여 테스트 서버용으로 Meecrowave에서 사용하는 임의 포트에 액세스합니다.
6. 의존성 주입
클래스에 의존성 을 주입 하려면 특정 범위 내에서 해당 클래스에 어노테이션을 추가해야합니다.
ArticleService 클래스 의 예를 살펴 보겠습니다 .
@ApplicationScoped
public class ArticleService {
public Article createArticle(Article article) {
return article;
}
}
이제 javax.inject.Inject 어노테이션을 사용하여 이것을 ArticleEndpoints 인스턴스에 삽입 해 보겠습니다 .
@Inject
ArticleService articleService;
7. 애플리케이션 패키징
Meecrowave Maven 플러그인을 사용하면 배포 패키지 생성이 매우 간단 해집니다.
<build>
...
<plugins>
<plugin>
<groupId>org.apache.meecrowave</groupId>
<artifactId>meecrowave-maven-plugin</artifactId>
<version>1.2.1</version>
</plugin>
</plugins>
</build>
플러그인이 준비되면 Maven 목표 meecrowave : bundle 을 사용하여 애플리케이션을 패키징 해 보겠습니다 .
패키지화되면 대상 디렉토리에 zip이 생성됩니다.
meecrowave-meecrowave-distribution.zip
이 zip에는 애플리케이션을 배포하는 데 필요한 아티팩트가 포함되어 있습니다.
|____meecrowave-distribution
| |____bin
| | |____meecrowave.sh
| |____logs
| | |____you_can_safely_delete.txt
| |____lib
| |____conf
| | |____log4j2.xml
| | |____meecrowave.properties
bin 디렉토리로 이동하여 애플리케이션을 시작해 보겠습니다.
./meecrowave.sh start
응용 프로그램을 중지하려면 :
./meecrowave.sh stop
8. 결론
이 기사에서는 Apache Meecrowave를 사용하여 마이크로 서비스를 만드는 방법을 배웠습니다. 또한 응용 프로그램에 대한 몇 가지 기본 구성을 살펴보고 배포 패키지를 준비했습니다.
항상 그렇듯이 코드 조각은 Github 프로젝트 에서 찾을 수 있습니다 .
- https://docs.spring.io/spring-framework/docs/current/reference/html
- https://www.baeldung.com/apache-meecrowave
'Java' 카테고리의 다른 글
Spring Boot Ehcache 예제 (0) | 2021.03.16 |
---|---|
Spring Security : 유저 Role 확인 방법 (0) | 2021.03.15 |
스프링 테스트의 WebAppConfiguration (0) | 2021.03.15 |
Spring REST 및 AngularJS 테이블을 사용한 페이지 매김 (0) | 2021.03.15 |
Spring REST API에 대한 요청 제한 시간 설정 (0) | 2021.03.14 |