일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 토비의 스프링
- Kotlin
- Java
- IntellJ
- 쿠버네티스
- spring
- 보조스트림
- SpringBoot
- 스트림
- 스프링
- thread
- jvm
- MSA
- gradle
- 자바 ORM 표준 JPA 프로그래밍
- OS
- JPA
- Real MySQL
- Stream
- 이스티오
- list
- K8s
- 백준
- GC
- 토비의 스프링 정리
- Collection
- redis
- Stack
- 자바
- mysql
- Today
- Total
목록전체 글 (153)
인생을 코딩하다.

Domain 레이어란? 1. Domain - 저장소와 밀접한 중심 도메인을 다루는 계층은 더 견고하고 특별하게 격리되고 관리되어야 하기 때문에 반드시 분리되어야 한다. 즉, JPA를 기준으로 한다면 테이블과 맵핑되는 Class들 - 이 계층은 오로지 도메인에만 집중하고, 어떠한 도메인이든 그 도메인이 가져야할 서비스와 무관한 도메인의 비즈니스가 있다. 2. Repository - 도메인의 CRUD 역할을 한다. 여기서 주의할 점은 모든 CRUD 역할을 이곳에서 하는 것이 아니다. 이 모듈은 시스템에서 가장 보호받아야 하며 가장 견고해야 할 모듈이므로, 이 모듈에서 CRUD에 관한 정의를 작성할때 많은 고민을 해야한다. - 예를 들어 시스템 도메인에 관한 통계를 기능으로 추가한다고 했을 때, 이는 시스템이..

통합테스트 장점 모든 빈을 올리고 테스트를 진행하기 때문에 운영환경과 가장 유사하게 테스트 가능 API를 테스트 할 경우 요청부터 응답까지 전체적인 테스트 진행 가능 단점 모든 빈을 올리고 테스트를 진행하기 때문에 테스트 시간이 오래걸리고 무거움 테스트의 단위가 크기 때문에 테스트 실패시 디버깅이 어려움 외부 API 콜 같은 Rollback 처리가 안되는 테스트를 진행하기 어려움 단위테스트 장점 TDD 의 첫 단계의 기능 단위의 테스트 코드 작성 단위테스트를 진행하면 여러 문제점들을 사전에 차단하여 더 빠른 오류 검증 및 수정을 빠르게 해결 가능 단점 아래 참고 테스트 격리 : 테스트를 서로 격리하여 한 테스트를 실행해도 다른 테스트에 영향을 주지 않도록 해야한다. 즉, 테스트는 순서에 상관없이 독립적으..

open API 활용을 위해 서비스 인증 키를 이용하여 raw 데이터를 받아오면서 공부하게된 RestTemplate 우선 서비스 인증키를 이용하기 위해 String decodeServiceKey = URLDecoder.decode(serviceKey, "UTF-8"); 디코딩하고 UriComponents 클래스를 이용하였다. UriComponents uri = UriComponentsBuilder.fromHttpUrl(url).queryParam("serviceKey", decodeServiceKey) .queryParam("pageNo", pageNo) .queryParam("numOfRows", numOfRows) .queryParam("startCreateDt", startCreateDt) .que..

CORS : Cross - Origin Resource Sharing 프론트 관련 서버를 별도로 띄었는데 백엔드 API 서버와 완전히 다른 주소로 인식하게 되었다. 이런 경우에 보안성 때문에 서로 접근할 수 없게 처리가 되어있었다. 프론트 서버는 http://localhost:3000/ 이였고, 백엔드 API 서버는 http://localhost:8080/restaurants 였다. 개발자도구(F12)에서 API 서버를 호출하기 위해 fetch('http://localhost/restaurants') 를 해주었는데 아래와 같은 CORS 에러가 발생하였다. 그래서 이 부분을 스프링에서 제공하는 @CrossOrigin을 이용해서 해결하고자 하였다. 그래서 controller 클래스 맨 위에 @CrossOri..

그동안 TestCode를 작성 할 때, JSON 문자열을 일일이 입력하면서 불편하다는 생각을 했었습니다. 그래서 이를 해결하기 위해 구글링 해보다가 알게된 사실입니다. 윈도우 기준으로 1. 큰 따옴표 사이에 커서를 두고 alt + enter를 눌러 "Inject language or reference"를 누릅니다. 2. 그 후, JSON(JSON)을 클릭합니다. 3. 큰 따옴표 사이에 커서를 두고 다시 alt + enter를 누르면 "Edit JSON Fragment" 라는 팝업이 추가되는데 눌러줍니다. 4. 아래 JSON 편집 화면이 생성됩니다. Fragment 편집 화면에서 JSON을 직접 편집하면 편집한 내용이 자동으로 변수에 값 변환이 되어서 적용 됩니다. 5. 작성 후 들여쓰기를 해줍니다. 큰 ..
============ 기준으로 위 4, 아래 5 content().string(containsString()) // Junit4 ==================================================================== content().string(org.hamcrest.Matchers.containsString()))) // Junit5 assertThat(skhu.getId(), is()); // import org.hamcrest.core.Is.is; ================================================================================================== assertThat(skhu.getId..

직렬화(Serialization) 인스턴스의 상태를 그대로 저장하거나 네트워크로 전송하고 이를 다시 복원하는 (Deserialization)하는 방식 ObjectInputStream과 ObjectOutputStream 시용 보조스트림 객체의 상태를 영속화 하는 메커니즘 객체를 다른 환경(File, db)에 저장했다가 나중에 재구성 할 수 있게 만드는 과정 언제쓸까? 객체의 상태를 영속해야 할 필요가 있을때 , 즉 어딘가에 저장해야 할 필요가 있을때 (여기서 저장이라는 것은 파일이나 데이터베이스가 될 수도 있고, 캐시와 같은 메모리가 될 수도 있다.) 정보를 전달할 필요가 있을 때 (다른 VM (버츄얼머신) 에게 객체의 정보를 전송해야 할 시에 바이트 스트림으로 변환해서 전송해야 할 때) Serializa..

보조스트림 - 실제 읽고 쓰는 스트림이 아닌 보조적인 기능을 추가하는 스트림 - FilterInputStream과 FilterOutputStream이 보조스트림의 상위 클래스 생성자의 매개 변수로 또 다른 스트림을 가짐 생성자 설명 protected FilterInputStream(InputStream in) 생성자의 매개변수로 InputStream을 받는다. public FilterOutputStream(OutputStream out) 생성자의 매개변수로 OutputStream을 받는다. 데코레이터 패턴 형식이다. 여러가지 보조 스트림 사용하기 Buffered 스트림 : 내부에 8192 바이트 배열을 가지고 있음, 읽거나 쓸 때 속도가 빠름 DataInputStream/DataOutPutStream :..