본문 바로가기

728x90

spring boot

(4)
[문제기록] K8s+Ingress 로 Spring Boot 배포시 Tomcat 400 에러 관련 사내 환경에서 Baremetal 용 Ingress Controller 를 설치해서 Spring Boot 애플리케이션을 이전하는 작업을 진행하였다. Ingress Controller 는 환경/목적 별로 정의서가 구분되어 있는 오픈 소스를 많이 활용한다. 사내는 외부와 연동이 어렵고 VM 을 할당받아 사용하기 때문에 Baremetal 용으로 사용하였다. (https://kubernetes.github.io/ingress-nginx/deploy/baremetal/) Baremetal 용은 Ingress Controller 서비스가 Node Port 서비스이기 때문에 워커 노드들의 Node 를 활용해서 Ingress Controller로의  접근을 제어해야 한다. 따라서 모든 워커노드들에 대한 접근을 제어하기 ..
[JPA] 연관 객체 불러오기.. Fetch Join 정말 괜찮을까? 결론부터 말하자면 약간 뻘짓한 글이다. 그래도 긍정적으로 본다면 고민을 해봤다는 의의는 있으니.. 초보자의 수준에서 한 번 고민을 공유한다고 생각하면 될 것 같다. (1) 개요 서비스단을 개발하다 고민하게 된 부분이 있어서, 정리해보면서 결론을 만들어 나가보기로 했다. 우선 개요는 다음과 같다. Group 객체가 있고, Group 활동 안에 게시물인 Post 객체가 있으며, Post 에는 댓글인 Comment 객체가 있는 다음과 같은 상황이다. 아래에는 표시되어 있지 않지만, Member 객체가 당연히 있으며, Member 와 Group 사이에는 현재 상태가 기록되고, [강퇴 / 휴면 / 활동] 의 세 가지 상태로 관리된다. 이와 같은 관계는 많이 발생하는 일반적인 상황으로, 모두 비식별 관계이다. 이 ..
[문제기록] Lombok @Getter 사용시 boolean 값 처리에 대하여 프로젝트를 하던 중, 다음과 같은 Request DTO 를 만들어야 할 일이 있어서 만들었다. @Getter @Setter @NoArgsConstructor public class ACreateReqDto { private String name; // ... private boolean hasRule; @JsonProperty("rule") private RuleCreateReqDto ruleDto; @Getter @Setter public class RuleCreateReqDto{ private String ruleName; private boolean isAgeRule; } } 이렇게 해서 다음과 같이 요청처리 코딩을 완료해서 다음과 같이 날려보았다. 다 잘 들어오는줄 알았는데, 이상하게도 isAge..
[단위테스트] Spring Service 단을 테스트해보자 일반적인 Domain 에서 Entity 생성을 Test 해보기 위한 과정을 담아보자 (출처 하단). 간단한 예제를 실무에서 사용하는 방식과 최대한 엮어본 듯 했다. 참고로 Repository 단은 단순 Data Jpa 사용했고, 필요한 필드에 대해서 네임드 쿼리 생성되도록 해주었다. 우선 User 는 다음과 같다 1. User.java @Entity @Getter @NoArgsConstructor(access = AccessLevel.PRIVATE) public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String username; private String password; p..