일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- nurigo
- 위키 탭
- NAVER D2
- 스프링 회원가입 인증
- 문자 인증
- ssh
- Spring
- 스터디 관리
- OpenAI
- 인턴
- Executors
- 현장실습 IT
- DNS동작원리
- 값 객체
- 프로그래머스
- 스프링
- 개발자 디자인
- 자바
- 현장실습
- 정렬 기준
- 위키 꾸미기
- 스트림
- 잘하고싶다..
- excalidraw
- Java
- 셀레니움
- 사이드 프로젝트
- 숭실대
- REST
- aws ec2
- Today
- Total
목록Spring (8)
뭐요
라이브러리 사용모델 선택의 고민1. text-davinci-0032. gpt-43. gpt-3.5-turbo프롬프트 엔지니어링Spring에서 API 호출1. 동기 호출 by OpenFeign2. 비동기 호출 by OpenFeignComletableFuture 객체ExecutorExecutorsThread PoolWorkStealingPool 라이브러리 사용정식 지원 ⇒ Python, NodeJS따라서 AWS Lambda 활용 모델 선택의 고민추천 사유 요약에 대한 목적에 맞게 모델을 변경하며 적합한 모델을 heuristic하게 찾아감. 1. text-davinci-003엄청엄청 느림…! 2. gpt-4한번의 API 호출 ⇒ 10.95srequest_input = ' '.join(event) + " 이 문..

로그 관리 도구 부재의 문제점 좋지못한 가독성 에러 디버깅 등 로그를 확인할 필요성이 생긴다면 직접 터미널을 통해 ssh 접속해서 서버에 접근했습니다. 터미널에서 로그를 확인하다 보니 무수히 쌓여있는 로그를 읽을 때 분간이 가지 않아서 읽기가 힘듭니다. 클라이언트와 API 연동의 어려움 서버에서 개발한 API를 연동하기 위해 클라이언트가 API를 테스트 하면서 문제가 발생할 수 있습니다. 때때로 (물론 우리 소프티어 부트캠프 AOS, FE 님들은 잘해주시지만 ^,^) 다음과 같이 말하곤 합니다. “이거 안되는데요?” 그러면 API를 호출했을 때 어떤 parameter를 넣었는지, 로그를 확인하기 위해 언제 호출했는지 등 반문 해야합니다. 심지어 로그만 확인한다면 원인을 쉽게 알 수 있는 경우도 빈번히 있..
왜 알아보았는가Restful API의 URI를 설계하면서 일관성있고 식별하기 좋은 방식을 고민했습니다. 팀 내에서 URI 컨벤션을 만들지 않고, 범용적으로 사용되는 Naming의 기준이 존재하는지 찾아보다 공식문서에 있는 Naming Guide를 발견해 아래와 같이 정리했습니다. 개념자원 (resource)In REST, the primary data representation is called resource데이터의 주체가 되는 대상행위가 아닌 대상 그 자체를 지칭 membersboardsitems 문서 (document)A document resource is a singular concept that is akin to an object instance or database record.단일 개념 ..
단위 테스트 작성 기본 구조1개의 단위 테스트를 3단계로 나눈다.Given : 어떠한 데이터가 주어졌을 때When : 어떠한 함수를 실행하면 Then : 어떠한 결과가 나와야 함기본 개념 요약Mockito개발자가 동작을 직접 제어할 수 있는 가짜 객체를 지원하는 테스트 프레임워크가짜 객체를 주입시켜 객체 간의 의존성을 제거 Mock 객체 의존성 주입 Annotation@Mock: 가짜 객체를 만들어 반환해주는 어노테이션@Spy: Stub하지 않은 메소드들은 원본 메소드 그대로 사용하는 어노테이션@InjectMocks: @Mock 또는 @Spy로 생성된 가짜 객체를 자동으로 주입시켜주는 어노테이션Example)UserController에 대한 단위 테스트를 작성할 때 @Mock을 통해 가짜 UserServ..
스프링에서는 transaction에 대한 roll back 처리를 위해 @Transactional을 사용합니다. 해당 Annotation은 메소드 혹은 클래스에 다음처럼 사용할 수 있습니다.@Transactional public class transactionalTestClass{ ... }@Transactional public void transactionalTestMethod() { ... } @Transactional의 기본 적용 범위@Transactional 에는 다양한 option을 붙일 수 있는데, 아무 옵션 없이 해당 Annotation을 붙이면 Unchecked Exception과 Error 만을 roll back 처리 해줍니다. Spring FrameWork 공식문서 참조💡Attribut..

Exception의 기본 개념 : https://dmansp.tistory.com/39 왜 알아보았는가 clean code를 읽어보면 try-catch를 통한 예외처리는 최대한 지양하라는 의견이 지배적입니다. 서비스 로직을 작성할 때 throw하는 모든 exception에 대해 try-catch로 주렁주렁 예외처리를 해주면 적절한 관심사 분리가 이루어지지 않습니다. 이는 명백한 SRP 위반이며 매우 복잡한 코드가 되어 유지보수 하기 어려워집니다. 따라서 코드는 아래처럼 작성하는 것이 clean한 코드입니다. function registerUser() { var request = receiveRequest(); validateRequest(request); canonicalizeEmail(request);..
왜 알아보았는가RestTemplate Class를 이용하여 외부 API 호출을 시도했고 코드에는 전혀 이상이 없어보였다. 하지만 실패했고 다음과 같은 Exception이 발생했다.💡org.springframework.web.client.ResourceAccessException: I/O error on POST request for "{도메인}”: Illegal given domain name: {도메인}; nested exception is javax.net.ssl.SSLHandshakeException: Illegal given domain name: {도메인} 원인해당 프로젝트는 jdk8 구버전 이하에서 발생한다. 호출하는 API의 도메인에 언더바 (_)가 포함되어 있는 경우 jvm이 인식하지 못하..

왜 사용해야 하는가 BE와 FE는 협업을 위해 API 명세서 작성이 필수적이다. 명세서 작성은 다소 번거로운 작업이지만, Spring Boot에는 이러한 API 명세서를 쉽게 작성해줄 수 있는 기능을 제공한다. 지금까지 Notion을 활용해서 명세서를 작성했지만 앞으로는 Swagger를 적극 활용하려고 한다. 써보니 진짜 너무 편함.. 장점 API가 수정이 되더라도 문서가 자동으로 업데이트 됨 간편하게 REST API를 문서화할 수 있음 문서화 뿐 아니라 빌드, 테스트 케이스도 작성 가능 라이브러리 보통 아래 두 개의 라이브러리를 사용함. springdoc vs springfox springdoc를 통해 Project에 Swagger를 적용하자 Swagger 3.0 springdoc 공식문서 : http..