스프링 클라우드용 프로젝트 여러개를 1개의 깃으로 병합
모든 SpringBoot1.x 작업을 SpringBoot2.5.x 로 마이그레이션
모든 JUnit4 테스트를 JUnit5 용으로 마이그레이션
기존 springboot2(인텔리 J) 와 configserver(이클립스) 프로젝트를 1개의 저장소로 통합
통합한 것을 인텔리 J 로 불러옴: 인텔리 J 에서 2개가 모두 동시에 실행된 모습(아래)
git submodule add https://github.com/miniplugin/cloud-config-server-configuration.git
위 명령으로 현재 깃 저장소에 클라우드용 설정 내용 가져오기처리
주) 위 가져온 깃 내용은 확인용으로 직접 수정은 않됨, 수정하려면, 위 외부 깃 주소내용을 수정해야 함
외부 작업결과는 Git 메뉴의 Update Project 클릭하면 적용 됨.
스프링 이니셜라이즈로 스프링부트 생성 후 인텔리 J 로 불러와서 pom.xml 파일 우클릭 > add Maven Project 선택하면 실행가능하게 변함.
JUnit4 에서 @RunWith(SpringRunner.class) 사용한 애노테이션이 JUnit5 에서는 팰요 없음.
스프링 클라우드는 여러 서비스가 HTTP 로 협력하는 마이크로서비스 아키텍처 작성을 쉽게 만들어 준다.
마이크로서비스 계약관계 개념: product(제공자) <-contract(계약)-> consumer(소비자)
20211023(토): 계정서비스(accountService consumer 소비자로서 마이크로서비스 프로젝트)
20211022(금): 계정서비스(accountService consumer 소비자로서 마이크로서비스 프로젝트 작업)
20211012(화) : 사용자서비스(UsersService product 제공자로서 마이크로서비스 프로젝트 작업)
20211010(일) : UsersService 제공자로서 마이크로서비스 프로젝트 준비
20211009(토) : 클라우드 클라우드 API 계약(아래 계정서비스는 컨슈머, 사용자서비스는 프러덕트 관계가 된다.)
20211008(금) :test2/com.boot.test2/users/UsersServiceTests.java
마이크로 서비스용 테스트인 @RestClientTest 애노테이션 사용
MockRestServiceServer 객체 사용: 운영 API 서버실행 없이(단, 서비스클래스에서 URI 필요) API 서비스 테스트 가능.
registerRestTemplate 레스트템플릿 사용으로 위 서버 반환값을 JSON 객체로 처리 가능하게 됨.
20211007(목): test2/com.boot.test2/account/AccountRepositoryTest.java
@DataJpaTest 사용:
AccountNumber 클래스는 숫자 널체크 및 개수 제한 조건을 줄수 있다.(아래)
public AccountNumber (String accountNumber ) {
Assert .notNull (accountNumber , "Account Number 공백일 수 없습니다." );
Assert .isTrue (accountNumber .length () == 9 ,
"Account Number 는 반드시 9자 이어야 합니다." );
this .accountNumber = accountNumber ;
}
참고로, @DataJpaTest 를 사용하지 않는 스프링5 레커시에서는 Account.java 클래스에 아래처럼 널체크를 한다.
@ NotNull (message ="빈값으로 저장할 수 없습니다." )
private String accountNumber ;
20211004(월): test2/com.boot.test2/account/AccountControllerTest.java, AccountService.java
@WebMvcTest 사용: MVC 컨트롤러 테스트 전용 애노테이션 인터페이스
20211003(일): test2/com.boot.test2/users/UsersTests.java
JUnit5 단위 테스트(주피터사용): @JsonTest 사용
20210930(목): test2/test/Test2ApplicationTests.java
env:
JBP_CONFIG_OPEN_JDK_JRE: '{ "jre": { version: 11.+ } }'
@RefreshScope 붙은 클래스 객체는 실행시 설정서버 정보를 항상 새로 불러 들인다.
RefreshCounter 로 위 @RefreshScope 가 붙은 ProjectNameRestController 스프링 빈의 리프레시를 확인
3장 마무리: 주) configclient 앱 실습은 클라우드 파운드리(PaaS-TA) 에 배포 했을때 사용 가능 합니다.
클라우드버스 와 래빗엠큐 로 메시징 데이터를 전달하기 위해서 pom.xml 에 아래 내용 추가 한다.
<dependency >
<groupId >org.springframework.cloud</groupId >
<artifactId >spring-cloud-bus</artifactId >
</dependency >