본문 바로가기

Spring

(8)
WebFlux web-flux 경험하다 spring-gateway 서버를 만드는데spring-web 을 사용하지 않고spring-web-flux를 사용한다 그래서 인증서버를 호출하는 함수, redis 조회하는 함수를 사용하는데인텔리제이가 비동기로 작성하라고 한다. Mono를 사용하라는데 어라라?if문을 사용을 못하네?함수형으로 처리를 해야한다... web-flux 학습의 필요성을 느끼다3년 전에 web flux 책을 읽었었는데그때는 필요성을 못 느낀 상태로 공부를 했어서 그런가보다~ 하고 술술 넘어 갔는데이번에 spring-gateway 서버를 만들면서비동기 처리를 위해 함수를 작성하다보니 욕심이 생긴다. 그래서 Web Flux 관련해서 공부한 것을 아래에 정리 해보려고 한다.web-flux 왜 비동기인가?애초에 왜 ..
@SpringBootTest, @ContextConfiguration, Servlet Context, Servlet, Dispacher Servlet Spring Boot가 아닌 순수 Spring에서는 @SpringbootTest 을 못쓰는가?순수 Spring에서의 테스트?Application Context를 왜 만드는거야? Servlet Context랑 차이가 뭐야?Servlet Context가 없다면?Servlet?@WebServlet과 스프링 @Controller 차이Servlet 비효율적그래서 Dispacher Servlet이 생김Spring Boot가 아닌 순수 Spring에서는 @SpringbootTest 을 못쓰는가?그렇다 스프링 부트Spring Boot에서 제공하는 어노테이션Spring Boot 애플리케이션의 통합 테스트를 위해 사용@SpringbootTest는 애플리케이션 컨텍스트를 로드 함테스트에서 사용되는 모든 빈을 설정한 다음..
Layered Architecture Layered Architecture 계층 구조일반적으로 Layered Architecture는 다음과 같은 계층으로 구성됩니다:Presentation Layer (프레젠테이션 계층):사용자 인터페이스와 관련사용자가 시스템과 상호작용하는 인터페이스 제공예시: Controller 클래스@Controllerpublic class UserController { private final UserService userService; public UserController(UserService userService) { this.userService = userService; } @GetMapping("/users/{id}") public String getUser(@Path..
@EnableFeignClients, @FeignClient 연관성 의문Order project와 Product project는 별개의 project이다서로 다른 서버에서 호출하는 것과 같다.ProductResponseDto getProductById(@PathVariable("id") Long productId);  Order project에서 선언만 하고, 구현은 하고 있지 않다.어떻게 작동한거지?Product project에 있는 함수를 어떻게 호출한거지??@EnableFeignClients, @FeignClient달아주면 Order Server 1개 ------> Product Servers 여러 대"로드밸런싱하는 것 알겠는데" 작동하는 방법을 그림으로 설명하겠다. 전체 흐름도이 그림 보면 바로 이해한다  @EnableFeignClientsApplication에 ..
git ignore, commit history 삭제 프로퍼티 파일에는 아이디랑 비번이 있다.git에 올리면 안된다.ignore 해줘야한다. 이미 올린 경우.. git history 도 제거해야한다 Git Filter-Branch를 사용하여 기록 삭제 BFG Repo-Cleaner를 사용하지 않으려면, Git의 filter-branch를 사용할 수도 있습니다.그러나 이 방법은 더 복잡하고 느릴 수 있습니다:git filter-branch --force --index-filter \ "git rm --cached --ignore-unmatch src/main/resources/application.properties" \ --prune-empty --tag-name-filter cat -- --all   이후에, git gc 명령어로 청소하고, 강제로 푸시해..
cannot find method 'value' @Value 컴파일 에러 발생한다빨간줄 보이죠? 아이디랑 비번을 프로퍼티에 담아서 @Value 로 불러오면 되는 건데 왜 컴파일 에러가 나지? 빨간색에 마우스를 가져다보자cannot find method 'value'원인: import를 잘못 가져와서 그렇다 import lombok.Value롬복이 아닌 아래 import 가져와야 한다. import org.springframework.beans.factory.annotation.Value;  예방: Setting -> Enable annotation processing 체크  생성자 주입으로 코드를 수정해주고..@RequiredArgsConstructor 지양이유는 회사에서 시니어분이 @RequiredArgsConstructor 이런거 쓰면 스프링이 자..
Naver Developer Search API 연동 작성중네이버 api에서나의 애플리케이션을 등록하고아이디와 비번을 발급 받은 후postman으로 요청을 하면네이버에서 검색한 결과 값이 json으로 리턴 받을 수 있어 요청 urlhttps://openapi.naver.com/v1/search/shop.json?query=macbookheader에 파라미터 2개X-Naver-Client-IdX-Naver-Client-SecretNaver Developer Search API Document : https://developers.naver.com/docs/serviceapi/search/blog/blog.md#%EB%B8%94%EB%A1%9C%EA%B7%B8 블로그 - Search API" data-og-description="검색 > 블로그 블로그 검색 개..
error 1045 (28000): access denied for user 'root'@'localhost' (using password: no) error 1045 (28000): access denied for user 'root'@'localhost' (using password: no) [MySQL] ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) Caused by: jakarta.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.exception.GenericJDBCException: Unable to open JDBC Connection for D..