스프링개발자
-
4. 그레이들 멀티프로젝트 - 유레카서버와 페인클라이언트 Eureka FeignClient스프링개발자/301 - 아키텍처 2020. 8. 31. 03:31
[배경] 여러 어플리케이션간의 호출을 하는 방법은 여러가지가 있다. 가장 기본은 RestTemplate를 이용하는 방법이지만, 단점이 있다. 그에 해결책으로 쓸 수 있는 Eureka Server와 FeignClient의 조합에 대해 알아보자. 다음은 유레카 서버에 대한 설명 Eureka Server is an application that holds the information about all client-service applications. Every Micro service will register into the Eureka server and Eureka server knows all the client applications running on each port and IP address. ..
-
3. 그레이들 멀티프로젝트 - RestTemplate스프링개발자/301 - 아키텍처 2020. 8. 30. 04:29
[배경] 앞서 구현한 두개의 어플리케이션 간의 호출이 일어나게 하자. 1. RestController 만들기 weather-application내에 비가 오는 확율을 계산해주는 ForecastController를 만든다. package com.example.monorepo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; @RestController @RequestMapping(value = "/weather") public class ForecastController { @Autowired ForecastSer..
-
2. 그레이들 멀티프로젝트 - 공통자원 활용(compile project)스프링개발자/301 - 아키텍처 2020. 8. 30. 04:04
[배경] 지난시간에 mono repo를 셋업했다. 이번에는 그 장점을 살려서 여러 application의 공유자원이 있는 resources 모듈을 만들어본다. 1. 부모Module과 자식Module Intellij에서 우리의 root directory인 monorepo를 우클릭하여 자바 모쥴을 만든다. spring-applications라고 이름지어주고, 지난 시간에 만든 어플리케이션 2개를 하위경로에 넣어둔다. spring-resources라는 모듈을 만들고, shared-entities라는 sub모듈을 하나 만든다. 이후에 root경로에 있는 settings.gradle을 다음과 같이 바꾼다 rootProject.name = 'monorepo' include 'spring-resources:share..
-
1. 그레이들 멀티프로젝트 - 셋업하기스프링개발자/301 - 아키텍처 2020. 8. 30. 02:11
[배경] 반복되는 코드 줄이기 쉽다. 여러 어플리케이션을 하나의 git repo에서 관리하기 쉽다. 참고: https://docs.gradle.org/current/userguide/multi_project_builds.html 1. Intellij IDEA 프로젝트 생성 Spring Initializr를 쓴다. 특별한 것은 없고 대략의 설정은 다음과 같다; group: com.example Type: Gradle Config (Generate a Gradle build file.) Artifact: monorepo Packaging: Jar 프로젝트를 처음 설정하면 나오는 다음의 tip들을 yes 한다; configure automatically auto import 다음의 오류가 떴다. 나의 현재 g..
-
5. Java + Selenium 테스트를 만들 수 있다스프링개발자/202 - 디버깅+테스팅 2020. 8. 15. 05:16
이번 글은 API testing 이 아니라 Front-end UI testing 이다. Fullstack testing?이라는게 있는지는 모르겠지만, backend application 도 간단한 홈페이지 정도는 있는 경우가 많으니, 웹 자동테스팅도 알면 나쁠건 없다. 1. 의존성 추가 mvnrepository.com에서 selenium java를 검색한 결과이다 다음의 의존성을 gradle에 추가하자 // https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java compile group: 'org.seleniumhq.selenium', name: 'selenium-java', version: '3.141.59' 2. Seleniu..
-
4. End-to-End 테스트를 만들 수 있다스프링개발자/202 - 디버깅+테스팅 2020. 8. 15. 04:42
유닛테스트는 클래스 안의 메소드 하나 정도를 테스트 한 작은 단위의 테스트라면, End-to-End 테스트 (줄여서 E2E) 는 모든 영역에 걸쳐 어플리케이션이 잘 작동하는지, client의 입장에서 구현한 테스트이다. 앞서 Postman을 통해 request를 전송하고, response가 잘 나왔는지 검증하는 작업을, 아주 그대로 코드를 통해 구현하는 것이라 생각하면 쉽다. 따라서 해보려면, 이전 글의 완성한 아래의 branch에서 작업 시작하면 된다. https://github.com/2ndPrince/routeOptimization/tree/create-unit-test 1. EndToEndTest 어노테이션을 만들자 package me.ndPrince.routeOptimization.annotat..
-
3. 유닛 테스트를 어노테이션과 함께 만들 수 있다스프링개발자/202 - 디버깅+테스팅 2020. 8. 14. 10:53
내 어플리케이션의 코드가 꽤 많은 상황에서, 몇가지 기능을 추가 구현했는데, 기존 코드가 작동이 안된다면? 실제로 많이 일어나는 문제이다. 이전에 작동 하던 것은 여전히 작동하고, 새로 동작하는 것 또한 잘 작동하도록 하는것이 테스트의 역할이고 테스트가 중요한 이유이다. 가장 작은 테스트 단위인 유닛 테스트를 만들어보자. 이전 글과 마찬가지로, 여기의 코드베이스를 사용한다; (203시리즈에서 만든 코드이다) https://github.com/2ndPrince/routeOptimization/pull/8 1. DispatchService의 유닛 테스트를 만들자 @Service public class DispatchService { public void validate(DispatchRequest reque..
-
2. 인텔리제이(IDE)를 써서 효과적으로 디버깅 할 수 있다스프링개발자/202 - 디버깅+테스팅 2020. 8. 14. 00:59
본 포스팅에 사용되는 코드베이스(204 Validation 시리즈에서 만든 코드이다) https://github.com/2ndPrince/routeOptimization/pull/8 1. 문제 발생 어플리케이션을 실행시키고 아래의 json request를 postman을 이용하여 "/dispatch" endpoint에 전송하자 package me.ndPrince.routeOptimization; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class RouteOptimizationAp..