Spring

Spring/Spring

[Spring] 스프링 DataSource 간단하게 정리

의미 DataSource는 커넥션을 획득하는 방법을 추상화하는 인터페이스이다 해당 인터페이스의 핵심 기능은 커넥션 조회 하나이다 public interface DataSource { Connection getConnection() throws SQLException; } 정리 대부분 커넥션 풀은 DataSource 인터페이스를 이미 구현해뒀으므로 개발자는 구현체가 아닌 해당 인터페이스에만 의존하도록 코드를 작성하면 된다 만약 커넥션 풀 구현 기술을 변경하고 싶으면 구현체만 갈아끼우면 된다 스프링은 DriverManager도 DataSource를 통해서 사용할 수 있도록 DataSource 인터페이스를 구현한 DriverManagerDataSource라는 구현 클래스를 제공한다 스프링은 설정 파일을 읽어들..

Spring/Spring

[Spring] 테스트 대상(@InjectMocks) Mocking & Stubbing하기

개요 테스트하려는 메서드에서 다른 메서드를 호출하는 코드가 있었다. 그런데 이 메서드가 테스트를 하기 어렵게 구현되어 있어 실제 테스트 대상에 Mocking을 하려고 했으나 NullPointerException이 발생했다. 이는 Stubbing이 제대로 동작하지 않고, 실제 메서드가 호출됐기 때문이었다. 테스트 코드 - 에러 발생 @Test @DisplayName("유저의 닉네임을 수정하는 데 성공한다") void testSetUserNickname() { // given UserSaveRequest req = createAddUserRequest(); Long userNo = 1L; String defaultPicUrl = "https://test/img.png"; UserEntity userEntit..

Spring/Spring

[Spring] Mockito private method invocation 테스트하기

개요 ReflectionTestUtils를 활용하여 Mocking된 객체의 private method가 호출됐는지 여부를 다음과 같이 테스트할 수 있다. ReflectionTestUtils.invokeMethod(object, "privateMethodName", args); 예시 UserService public class UserService { public String signIn(String id, String password) { // ... return createJwtToken(authentication); // private 메서드 호출 } private String createJwtToken(Authentication authentication) { // ... } } UserServic..

Spring/Spring

[Spring] 트랜잭션 AOP 동작 흐름

트랜잭션 관련 포스팅 [Spring] 트랜잭션 추상화 정리 [Spring] 트랜잭션 동기화 정리 [Spring] 트랜잭션 AOP 동작 흐름 [Spring] 트랜잭션 AOP 사용 시 주의점 (ft. Spring AOP self-invocation) [Spring] 스프링 트랜잭션 전파와 롤백 [Spring] 트랜잭션 전파 옵션 트랜잭션 관리 AOP 프록시 트랜잭션 매니저 트랜잭션 동기화 매니저 요청 흐름 클라이언트 -> AOP 프록시 -> 서비스 -> 레포지토리 동작흐름 1. 클라이언트: 프록시 호출 클라이언트의 요청으로 AOP 프록시를 호출 2. AOP 프록시: 스프링 컨테이너를 통해 트랜잭션 매니저 획득 3. AOP 프록시 -> 트랜잭션 매니저: 트랜잭션을 시작 transactionManger.getT..

코택
'Spring' 카테고리의 글 목록 (6 Page)