전체 글
-
[Spring] ModelMapper MapStructProgramming/SpringBoot 2024. 7. 2. 13:41
Object MappingController, Service, Repository 등 레이어 간 데이터를 주고 받을 때 하나의 객체를 타입이다른 객체로 형변환하는 일이 빈번하게 발생한다. ( DTO와 Entity간 형변환 과정)이런 작업을 개발자가 모두 직접하게 되면 발생하는 문제점이 있다.반복적이고 코드 중복이 발생실수하기 쉽다필드 추가, 수정, 삭제가 일어날 경우 변환하는 로직에 대해 수정이 필요하다비즈니스 로직에 섞이게 되면 코드가 복잡해진다결국 생산성이 떨어진다.Object Mapping라이브러리는 이런 문제를 해결해주는 도구이다. ModelMapper, MapStructObject Mapping을 위한 Model Mapper와 MapStruct라이브러리가 있다. MapStruct는 컴파일 시..
-
[Project] Controller Test Code - MockHttpSessionProject 2024. 6. 21. 14:45
@WebMvcTest 어노테이션을 사용해서 컨트롤러 테스트를 할 수 있다. 세션 기반으로 사용자 인증을 구현하였기에 세션 인증 테스트를 어떻게 해야 하는지 알아보았다. 2가지 방법이 있다.1. Map 로 세션 속성 저장하기2. MockHttpSession 사용하기 1. Map @ExtendWith(SpringExtension.class)@WebMvcTest(CartApiController.class)public class CartApiControllerTest { @Autowired private MockMvc mockMvc; private Map sessionAttributes; @BeforeEach void setUp(){ sessionAttributes = ..
-
[Spring] TransactionProgramming/SpringBoot 2024. 6. 20. 10:00
트랜잭션더 이상 쪼갤 수 없는 최소 단위의 작업트랜잭션 경계 안에서 진행된 작업은 모두 성공하던지 모두 취소돼야 함 트랜잭션 속성● 트랜잭션 전파 Propagation트랜잭션 경계에서 이미 진행 중인 트랜잭션이 있을 때 또는 없을 때 어떻게 동작할 것인가를 결정하는 방식▷ PROPAGATION_REQUIRED가장 많이 사용진행 중인 트랜잭션이 없으면 새로 시작하고 이미 시작된 트랜잭션이 있으면 이에 참여함 ▷ PROPAGATION_REQUIRES_NEW항상 새로운 트랜잭션을 시작한다.독립적인 트랜잭션이 보장돼야 하는 코드에 적용할 수 있다. ▷ PROPAGATION_NOT_SUPPORTED트랜잭션 없이 동작하도록 만들 수 있다.진행 중인 트랜잭션이 있어도 무시한다.트랜재션 경계설정은 보통 AOP를 이용해..
-
[Project] Image전송Project 2024. 6. 17. 10:34
참고https://www.inflearn.com/questions/307133/image-%EC%A0%84%EC%86%A1%EA%B3%BC-%ED%95%A8%EA%BB%98-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%8A%94-json%EC%9C%BC%EB%A1%9C-%EB%B3%B4%EB%82%B4%EA%B3%A0-%EC%8B%B6%EC%9D%80-%EA%B2%BD%EC%9A%B0 https://kimvampa.tistory.com/223
-
[Java] StreamProgramming/Java 2024. 6. 16. 20:49
Stream APIJava는 객체지향언어이기 때문에 기본적으로 함수형 프로그래밍이 불가능하다.JDK8부터 Stream API와 람다식, 함수형 인터페이스 등을 지원하면서 Java를 이용해 함수형으로 프로그래밍할 수 있는 API를 제공한다.그 중에서 Stream API는 데이터를 추상화하고, 처리하는데 자주 사용되는 함수들을 정의해두었다.(데이터 추상화 : 데이터의 종류에 상관 없이 같은 방식으로 데이터를 처리할 수 있다는 것을 의미, 재사용 높임) 데이터 처리 연산을 지원하도록 소스에서 추출된 연속된 값 요소 Stream API의 특징1. 원본 데이터를 변경하지 않는다.원본데이터를 조회하여 원본의 데이터가 아닌 별도의 요소들로 Stream생성한다. 그렇기 때문에 원본의 데이터는 읽기만 할 뿐, 정렬이나 ..
-
[Project] CentOS7 JDK17 설치Project 2024. 6. 8. 14:57
CentOS7에서 더이상 패키지 업데이트를 지원하지 않아 yum으로 설치 가능한 OpenJDK는 버전11까지만 지원된다고 합니다. JDK소스 폴더를 다운받아 HOME PATH까지 설정하는 방법을 포스팅하겠습니다. 1. wget, curl 다운로드wget, curl은 둘 다 웹 서버로부터 컨텐츠를 가져오는 Linux커맨드입니다.yum -y install wget curl root가 아니라면sudo yum -y install wget curl 2. JDK다운로드JDK를 저장할 임시 저장소인 tmp디렉토리를 생성 후 경로 이동합니다.그 다음 다운로드 명령어를 입력합니다.### 임시 다운로드 저장 장소 ###mkdir tmpcd tmp### Linux 64-bit ###wget https://download.j..
-
[Project] Naver cloud platform 서버 생성Project 2024. 6. 8. 12:51
Server에서 1세대 서버를 생성해봅시다. 1. 서버 선택 서버 이름은 프로젝트 이름과 동일하게 하면 됩니다. 인증키 이름은 아무거나 작성합니다. 서버 생성을 완료하면 안내문이 나옵니다. 2. 공인 IP 신청서버에 접속하기 위해 공인 IP 신청과 포트포워딩 을 설정해야합니다.신청할때 적용 서버를 선택하면 해당 서버에 자동으로 공인 IP가 설정됩니다. 3. 포트포워딩서버에 접근하고자 하는 포트 번호를 지정합니다. 1024이상외부에서 2022로 접근하면 서버의 22번 포트로 포트포워딩됩니다. 4. ACG 설정Access Control Group 설정을 통해 방화벽 규칙을 추가합니다.접근 소스가 0.0.0.0/0이면 모든 IP에 대해서 접근을 허용한다는 뜻입니다.myIp버튼을 눌러 현재 내 PC IP..