Back-End/Spring 7

프로젝트 중 잘못된 테스트 바로잡기

✔️ 문제테스트를 하는데 자꾸 이상하게 예측값보다 -1 인 값이 나와서보니 테스트 코드를 잘 못 짜서 그런 것이였다. @Transactional과 @BeforeEach를 제대로 사용하지 않았기 때문이였다. 문제의 코드 @Slf4j@SpringBootTestclass FocusTimeJdbcRepositoryTest { @Autowired FocusTimeJdbcRepository repository; @Autowired FocusTimeJpaRepository jpaRepository; @Autowired MemberRepository memberRepository; @Autowired TransactionTemplate transactionTemplate;..

Back-End/Spring 2025.07.08

테스트에서 영속화

스프링에서 테스트 코드 작성 중 엔티티의 영속화를 유지할 필요가 있다면@Transactional이 아닌TransactionTemplate를 사용해볼 수 있다.테스트 코드에서 @Transactional은 테스트 시작시 열리고 테스트가 끝나면 롤백된다. @AfterEach@Transactionalvoid delete() { Member member = memberRepository.findBySocialId(SocialType.KAKAO, "2gjdkl12333").get(); log.info("해당 id 삭제 ={}", member.getId()); memberRepository.deleteMember(member); }위 코드가 실행되면 member는 비영속화상태이기에 실패한다.Remov..

Back-End/Spring 2025.06.30

OIDC로 소셜 로그인 구현 [Spring Boot]

✔️ OIDC(OpenID Connect) 란 ? OpenID Connect 1.0은 OAuth 2.0 [RFC6749] 프로토콜 기반의 간단한 신원 계층입니다 . 클라이언트는 권한 부여 서버에서 수행한 인증을 기반으로 최종 사용자의 신원을 확인하고, 상호 운용 가능하고 REST 방식과 유사한 방식으로 최종 사용자의 기본 프로필 정보를 얻을 수 있습니다. - openid.net - OIDC(OpenID Connect)에서 로그인 제공자(예: 소셜 서버)는 공개 키를 JWKS(JSON Web Key Set) 형식으로 제공하며, 클라이언트는 로그인..

Back-End/Spring 2025.06.14

filter 코드 리팩토링 해보기

최근 토비의 스프링 3.1 책을 배우기 시작했다. 김영한 선생님의 강의를 이미 다 들었지만, 뭔가 더 깊게 배우고싶다는 생각이 들었다.  1장 챕터의 내용은 오브젝트와 의존관계로 내가 이해한 바로는 책임, 관심사 분리이다.  해당 부분을 공부하면서 임시로 미리 만든 프로젝트의 필터를 보니 정말 책에서 표현한 대로 난감했다.필터의 역할은 토큰 검증인데 비지니스 로직과, 시큐리티컨텍스트 홀더 저장 로직, 헤더와 토큰 저장 로직등이 들어있었다.이 기회에 배운 내용을 적용해보려한다. 기존 코드@Slf4j@RequiredArgsConstructorpublic class JwtAuthenticationFilter extends OncePerRequestFilter { private final JwtUtils ..

Back-End/Spring 2025.04.07

JWT(Json Web Token)

1. 정의JWT(JSON Web Token) : JSON 기반의 토큰 인증 방식 보안이 필요한 시스템에서 사용자 인증 및 정보를 안전하게 교환하거나세션을 사용하지 않는 무상태(stateless) 인증 시스템 에서 주로 사용 - 별도의 세션 저장소 강제 X   2. 구조JWT는 . 으로 구분된 세가지 부분으로 구성된다. Header.Payload.Verify_Signature(서명) Header 서명 알고리즘 (HMAC SHA256, RSA 등을 사용)토큰의 타입Payload Claim에 대한 property를 key-value 형태로 저장Claim은 일반적으로 사용자 정보 및 토큰에 대한 정보를 포함SignatureHeader와 Payload를 조합한 후 비밀키를 이용해 해싱한 값 해당 서명으로 토큰 위..

Back-End/Spring 2025.03.15

JDBCTemplate

✔️ JdbcTemplateSQL 직접 사용시 JDBCTemplate는 매우 좋다.spring-jdbc 라이브러리에 포함, 별도의 복잡한 설정 없이 바로 사용 가능 반복 문제 해결 템플릿 콜백 패턴 사용개발자는 sql 작성, 전달 파라미터 정의, 응답 값 매핑만 하면 된다. 반복 문제?커넥션 획득statement 를 준비하고 실행결과를 반복하도록 루프 실행커넥션 종료, statement, resultset 종료트랜잭션 다루기 위한 커넥션 동기화예외 발생시 스프링 예외 변환기 실행  단점 : 동적 SQL 해결 어려움  종류JdbcTemplate :  기본이며 순서대로 바인딩  (where name = ?) NamedParameterJdbcTemplate : 이름 지정 바인 (where name = :use..

Back-End/Spring 2025.03.13