개발로그

개발로그

[Spring] JJWT 의존성 오류 & WeakKeyException

JJWT 의존성 오류오래된 JJWT 대신 최신에도 업데이트 되는 JJWT API 활용하며 에러가 발생했습니다.JJWT API 의존성 외에도 런타임에 활용될 JJWT Impl,  JJWT GSON 의존성을 추가해야 합니다.아래 블로그의 도움을 받았습니다.https://atsky.tistory.com/53 [Spring Boot] JWT 라이브러리를 의존성 추가했음에도 빌드 오류가 나는건 왜일까?(feat. `io.jsonwebtoken:j발단흔히 사용하는 jwt 라이브러리인 jjwt 를 사용하여 개발하려 하니 2018년도 이후로 업데이트 되지 않고 있었다. 예제로도 jjwt 를 사용하는 경우가 많지만 최신 패키지인 jjwt-api 가 있기에 이를atsky.tistory.com JJWT Impl 의존성 추가..

개발로그

SpringBoot 2.4v 이상 H2 DB url이 아닌 랜덤 문자열로 설정될 때

아래와 같이 db 이름을 설정했습니다.spring: application: name: catalog-service h2: console: enabled: true settings: web-allow-others: true path: /h2-console jpa: hibernate: ddl-auto: create-drop datasource: driver-class-name: org.h2.Driver url: jdbc:h2:mem:testdb username: sa password:  SpringBoot 2.4버젼 이후로 추가적으로 application 설정이 필요합니다.spring: data..

개발로그

[MSA] Spring Clound Gateway 사용하는 이유 & 설정

Why GateWay?Gateway 없을 때Gateway 있을 때Gateway 자체도 Eureka Client 의존성 포함해야함(Eureka Server에 등록되어야 하기 때문)application.ymlserver: port: 8000eureka: client: register-with-eureka: true fetch-registry: true service-url: defaultZone: http://localhost:8761/eurekaspring: application: name: apigateway-service cloud: gateway: routes: - id: user-service # gateway 등록 id ..

개발로그

[MSA] Eureka Server- Client

Eureka Server Service 생성 Eureka Client Service 생성  server.port: 0으로 지정시 실행시킬 때마다 포트 랜덤 지정됩니다.동일한 서비스의 인스턴스를 따로 관리하기 위해 랜덤값 지정 Eureka Server - Client 순으로 기동참고https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C-%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4/dashboard Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) 강의 | Dowon Lee - 인프런Dowon Lee |..

개발로그

[Spring SSE] 서버에서 클라이언트로 실시간 알림 푸쉬 SSE

구현하고 싶은 기능 여행 관광지나 축제 리뷰를 지도로 관리하는 프로젝트를 진행하면서 사용자가 관심있는 지역을 팔로우하고, 그 지역에 새로운 관광지나 축제가 추가 될 때 알림을 보내고 싶었습니다. 일단 구현화면부터 보여드리겠습니다. 지역 팔로우 관리자가 새로운 컨텐츠 추가시 팔로워들에게 알림(좌측 화면 사용자/ 우측 화면 관리자) SSE 선택 이유 프로젝트에서 새로운 관광지나 축제가 생길시 서버에서 클라이언트로 단방향 알림 푸쉬가 필요했습니다. 요청을 주기적으로 보내면서 이벤트를 체크하는 polling은 http 오버헤드 때문에 서버의 부담이 크고, 양방향 통신이 필요없기에 websocket은 고려하지 않았습니다. http 요청을 이벤트 발생시까지 유지하는 Long polling과 text/event-st..

개발로그

[Mybatis] JPA 고수인 내가 Mybatis 세계에선 뉴비?

사실 JPA 고수 아닙니다.   자바 백엔드 시작을 김영한님의 강의를 보고 시작한만큼 DB접근 기술을 JPA밖에 몰랐었고, 올해 초에 프로그래머스에서 진행한 단순 CRUD 구현을 그만 ! 스터디를 들으면서 JDBC Template를 써보긴했지만 스터디 커리큘럼을 따라가면서도 테이블 정의하는 것과 PrepareStatment로 쿼리짜는 게 귀찮아 DBA의 튜닝 쿼리를 빠르게 적용할 수 있겠다는 장점만 기억하는 것과 JPA를 쓰고 싶다는 생각만 했었던 것 같습니다. JPA를 한번 더 추상화한 스프링 데이터 JPA를 사용하면서 얼마나 많은 부분이 추상화된지 이론적으로 공부는 했지만 마이바티스를 다뤄보면서 직접 테이블 생성과 쿼리를 짜며 프로젝트를 진행하며 사용한 후기를 정리합니다. Mybatis-Spring ..

개발로그

[개발로그] QueryDSL 사용 후기

연관관계 맵핑 이후 조회 쿼리 시 생각해야할 것 N+1, Fetch Join, JPQL @Query 사용 후기 QueyrDSL? JPA를 쓰면서 내가 가져오고 싶은 객체에 연관된 객체 자체를 한번의 쿼리에 모두 담아오고 싶을 때는 JPQL +Fetch Join 이나 EntitiyGraph를 통해 가져올 수 있다. 하지만 Spirng Data JPA만 사용해서는 조건에 맞는 연관된 객체를 찾기엔 JPQL문 자체가 길어지고, 오타 혹은 문법적인 오류를 포함할 가능성이 높아지고, 이후 엔티티 변경 시에도 JPQL도 영향을 받을 확률이 있다. QueryDSL 이런 문제를 해결해주는 QueryDSL은 정적 타입을 이용해서 쿼리를 생성해주는 프레임워크이다. 장점으로는 코드로 쿼리를 작성하기에 컴파일 시점에 문법 오..

개발로그

[개발로그] Srping Event, Async

Spring에서 Event가 왜 필요한가 ?Spring Event는 Spring의 3대요소 중 하나인 관점을 분리하기 위한 하나의 방법이다.예를 들어 유저가 회원가입을 할 때 인증을 위한 이메일을 보내는 로직이 어디에 존재해야할까 고민해볼 수 있다. @Service@RequiredArgsConstructor@Transactionalpublic class AccountService implements UserDetailsService { private final AccountRepository accountRepository; private final EmailService emailService; public Account signUp(SignUpForm signUpForm) { ..

비오베베
'개발로그' 카테고리의 글 목록 (2 Page)