본문 바로가기

Spring

(14)
[Spring] UnknownNamedQueryException 빌드를 하던중 다음과 같은 로그를 마주했는데요. 2024-01-03 14:43:12 [main] DEBUG o.s.d.j.repository.query.NamedQuery - Did not find named query ServiceType.findByNameEquals 2024-01-03 14:43:12 [main] DEBUG o.s.o.j.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler - Creating new EntityManager for shared EntityManager invocation 2024-01-03 14:43:12 [main] DEBUG o.s.d.j.repository.query.NamedQuery - Looki..
[Spring] Annotation Processor mapstruct processor 를 implementation 을 통해 의존성을 부여하였을 때 다음과 같은 예외가 발생하였습니다.  우선 문서에 나와있는대로 annotationProcessor 를 통해 의존성을 받아오니 정상동작은 하였지만 두 방식의 차이에 대해 알고있어야겠다는 생각이 듭니다.Annotation Processor 정의Annotation Processor 란 컴파일 시 끼어들어 특정 annotation 이 붙어있는 소스코드를 참조하여 추가적인 소스코드를 삽입하는 코드입니다.Annotation Processor 특징컴파일 단계에서 모든 동작을 수행하고, 런타임에는 사용만 하는 것이기 때문에 런타임시 추가적인 리소스가 들지않습니다. 따라서 런타임 예외도 발생시키지 않습니다.다만 프로젝트의 ..
[Spring] WebSocket WebSocketWebSocket(RFC 6455)은 TCP 연결을 통해 클라이언트와 서버간의 양방향통신을 사용할 수 있게 해줍니다. 일반적인 Http 프로토콜과는 다른 프로토콜이지만 80, 443 을 사용하고, Http와 호환되게 설계하여 기존 방화벽 규칙을 재사용할 수도 있습니다. HTTP 와의 차이점Http 통신은 애플리케이션이 다수의 URL로 모델링됩니다. 또한 클라이언트는 Req-Res 스타일로 해당 URL에 액세스합니다. 서버는 HTTP URL, 메서드, 헤더를 기반으로 라우팅합니다. 하지만 WebSocket 은 초기연결에 대한 URL이 1개만 존재합니다. 이후 모든 애플리케이션 메시지가 동일한 TCP 연결을 통해 전달됩니다. 이는 비동기식 이벤트 중심 메시지 아키텍쳐를 의미합니다. ** We..
[Spring] AOP * 해당 블로그의 모든 내용과 사진은 글 제일 아래 참고자료를 작성하였습니다. 간단한 AOP 맛보기에 이어 이번 글은 AOP의 다양한 사용에 대해 정리하는 글입니다. [Spring] Rest API와 AOP Rest API 다양한 Client들이 나오면서 브라우저는 그에 맞는 적절한 응답을 해주어야합니다. 이를 해결하기위해 Rest Api가 등장하였습니다. Rest Api란 웹서버의 자원을 클라이언트에게 구애받지 않고 mirr-coding.tistory.com AOP 사용 방법 위의 작업은 Advise 와 PointCut이 들어간 Advisor를 빈 후처리기에 등록 시키는 것과 같습니다. 위의 작업은 AspectV1와 비교해보면 하나의 함수안에 PointCut 그대로 적용하지않고, 분리하여 사용하는 방법..
[Spring] JPA? Hibernate? Persistence? JPA다들 프로젝트를 할 때 RDB와 접근하기 위해서 JPA를 접해보셨을겁니다.JPA란 Java Persistence API의 약자로 ORM을 편리하게 사용할 수 있는 인터페이스입니다. 여기서 ORM이란 Object Relational Mapping으로 객체와 RDB를 자동으로 매핑해주는 것을 말합니다.ORM은 보다 더 객체지향적인 코드를 사용할 수 있어 비즈니스 로직에 집중할 수 있고, 유지보수나 편리성을 증가시켜줍니다.Hibernate앞서 소개한 JPA의 구현체입니다. JPA 의 구현체는 더 있지만 가장 안정적인 구현체라고하네요.JPA를 공부하다보면 JDBC라는 키워드를 많이 접해보셨을텐데요.JDBC란 자바 DB 프로그래밍을 하기 위해 사용되는 API입니다.JDBC는 직접 DB와의 Conn을 열고 닫..
[Spring] Session (feat. 프로젝트 경험) Session Http 프로토콜은 기본적으로 요청에 대한 상태를 저장하지 않는 Stateless한 성질을 가지고 있습니다. 이를 해결해주기 위해 Session을 활용하는데요. 세션의 기본적인 특징을 알아보겠습니다. 우선 Session은 앞서 말씀드린대로 Stateful하게 하기위한 개념입니다. 사용자 A가 사이트에 로그인을 하게되면 서버에서는 사용자 A에게 고유한 값을 쿠키로 전달해줍니다. 실제로 제가 하는 프로젝트의 한 상황을 캡쳐한것인데요. 이런식으로 F12를 누르고 해당 옵션을 선택하면 어떤 쿠키가 왔는지 볼수있습니다. 그리고 추후에 클라이언트는 이 쿠키를 서버에 요청을 할때 같이 보내기만 하면 인증이되는 구조입니다. 세션의 특징으로는 쿠키와 비교를 할 수 있는데요. 1. 쿠키는 클라이언트에 정보가..
[Spring] application-{환경}.yml 과 @Value @Value Value 어노테이션은 .yml 파일이나 .properties 파일에 설정한 내용을 주입시켜주는 어노테이션입니다. 깃허브에 코드를 올리다보면 민감한 정보들까지 올려야되는 상황이 있는데요. 그럴때 사용할 수 있습니다. RDB 엔드 포인트, OAuth client_secret과 같은 보안에 예민한 정보들을 yml 파일에 담을 수 있습니다. 위에 보이시는 그림과 같이 application-{환경}.yml 형식으로 만들어 사용하시면됩니다. 이때 보안의 목적을 위해 application-{환경}.yml 형식으로 만들었다면 .gitignore에 다음과 같이 파일명을 적어주셔야합니다. 위와 같이 마쳤다면 application-{환경}.yml 이 어두운 노란색으로 변했을겁니다. @PropertySource..
[Spring] 단위 테스트 단위 테스트 프로그램의 작은 단위의 테스트를 진행하는 것을 의미합니다. 작은 단위의 기준은 정해져있지 않지만 보통은 메서드 단위의 테스트를 진행합니다. FIRST 좋은 단위 테스트라고하면 무조건 따라오는 5가지 특징이 있습니다. Fast : 단위 테스트는 빨라야합니다. 단위테스트의 목적이 빠르게 피드백주는데 있기 때문입니다. Isoated : 단위 테스트는 독립적이어야합니다. 말 그대로 "단위" 에 집중하는 것이기 때문에 다른 계층의 영향을 받으면 안됩니다. Repeatable : 단위 테스트의 결과는 항상 같아야합니다. DB 초기값이 변하거나 시간의 유동성에 따라 다른 결과를 낸다면 그때마다 다른 테스트 코드를 작성해야합니다. 따라서 결과가 항상 같게 코드를 구성해야합니다. Self-validating..