일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Router
- 토이프로젝트
- url parsing
- 서버구축
- 완전탐색
- EventListener
- Algorithm
- 정렬
- 알고리즘
- 리액트
- EC2
- 백준
- 자료구조
- react
- spring
- 백준알고리즘
- mysql
- 스터디
- sort
- 다익스트라 알고리즘
- nodejs
- 라우터
- 탐욕법
- 브루트포스
- 동적프로그래밍
- ELB
- BFS
- AWS
- Spring Boot
- java
- Today
- Total
목록Spring (11)
공부하는 블로그
MockServer? 테스트 코드를 작성하다보면 다른 서버로 웹 요청을 날리는 로직에 대해 어떻게 처리해야할지 고민하게 된다. 실제 웹 서버로의 요청을 날리기엔 네트워크 상태에 따라 테스트 케이스가 깨지는 경우도 발생하고, 실제 웹 서버에 테스트용 데이터가 전송되는 것도 이상하다. 결제 서비스의 경우 실제 요청이 진행될 경우 결제가 일어나게 되기도 한다. 이를 막기 위해서는 웹 서버를 Mocking 해야하는 상황이 발생한다. 이 때, Mock Server 라이브러리를 사용하면 간단하게 요청을 받을 웹 서버를 생성 가능하다. Spring Test With MockServer MockServer를 이용해서 다른 웹 서버로 요청을 날리는 클라이언트에 대해 단위 테스트를 진행해보자. 먼저 MockServer 라..
@TransactionalEventListener 이벤트 처리 로직에서 트랜잭션을 적용해야 하는 경우 사용한다. phase 옵션으로 어떤 식으로 트랜잭션 내에서 동작을 할 지 결정할 수 있다. TransactionPhase.AFTER_COMMIT 기본값 트랜잭션이 commit 되었을 때 이벤트 로직을 실행한다. TransactionPhase.AFTER_ROLLBACK 트랜잭션이 rollback 되었을 때 이벤트 로직을 실행한다. TransactionPhase.AFTER_COMPLETION 트랜잭션이 완료(commit 또는 rollback) 되었을 때 이벤트 로직을 실행한다. TransactionPhase.BEFORE_COMMIT 트랜잭션이 commit 되기 전에 이벤트를 실행한다. Example 옵션값 ..
Event Driven Programing 특정 동작에 대해 이벤트를 발생시키고 해당 이벤트를 구독하고 있는 여러 서비스에 이벤트를 전달시켜 동작하게하는 프로그래밍 방식이다. MSA 환경에서 이벤트 기반의 서비스 운영을 위해서 Kafka, RabbitMQ와 같은 다양한 메세지큐 시스템이 이미 개발되어 있다. Spring Application Event? 스프링에서 ApplicationEventPublisher을 이용하여 이벤트 기반의 프로그래밍을 할 수 있다. ApplicationEventPublisher를 통해 이벤트를 발행하면, 다른 Bean에서도 @EventListener를 이용하여 이벤트 데이터를 가져올 수 있다. Kafka가 외부 다른 어플리케이션끼리 메세지를 주고받을 수 있다면, 스프링 내부에..
BDD? Behavior Driven Development. 행위 주도 개발의 줄임말로, 사용자의 행위에 중심을 두고 짜여진 시나리오를 기반으로 테스트 코드를 작성한다. 즉, 주어진 환경에서 유저의 행위에 대한 결과 검증을 진행한다. Given, When, Then BDD의 정형화된 테스트 형식이다. - Given : 시나리오에서 유저에게 주어진 환경 - When : 유저의 행위 - Then : 행위의 예상되는 결과 예를 들어, 나는 빵집 리뷰 플랫폼을 만드는 개발자인데 "서울지역 이외의 빵집을 사용자가 리뷰로 등록할 때, 리뷰 등록이 불가능하다." 라는 유저 시나리오가 있다고 가정하면, - Given : 서울 이외의 지역 입력 - When : 사용자가 리뷰 등록 - Then : 예외 발생 로 나누어 테..
Mockito? 자바에서 단위 테스트를 위한 목업 객체를 편하게 만들 수 있도록 제공되는 프레임워크입니다. 어노테이션을 선언하여 간단하게 Mocking이 가능합니다. Mock @ExtendsWith(Mockito.class) 테스트 클래스 상단에 선언하여 Mockito를 사용함을 스프링 애플리케이션에 알립니다. @Mock 타겟 필드를 Mock으로 만들어줍니다. Mock으로 만들 멤버 객체에 선언하여 사용합니다. @InjectMock 해당 어노테이션이 선언된 타겟 필드에 @Mock 어노테이션이 붙은 Mock 객체를 주입시켜줍니다. 단위 테스트의 대상이 될 클래스에 선언하여 사용합니다. @ExtendsWith(MockitoExtension.class) // 테스트 클래스에 선언 class MyServiceT..
# MyBatis? 마이바티스(MyBatis)는 일반 SQL, 저장 프로시저 및 고급 매핑(Mapping)을 지원하는 프레임워크로 JDBC로 처리하는 상당 부분의 코드와 파라미터 설정 및 결과 매핑을 대신 진행한다. 마이바티스에서는 프로그램에 있는 SQL들을 프로그램 코드와 분리할 수 있어 유지보수성을 향상시켜준다는 장점이 있다. 설명은 장황하지만 그냥 간단하게 말하자면 RDB와 스프링 프로젝트를 연동해주는 프레임워크라고 생각하면 된다. # Hikari CP(Connection Pool) 데이터베이스 커넥션을 관리해주는 도구이다. 커넥션 풀은 설정된 풀의 사이즈만큼의 커넥션만을 허용하며 순차적으로 DB에 요청된 커넥션을 처리해준다. 여러 DBCP(Database Connection Pool)가 존재는데 ..
IntelliJ에서 간단하게 Spring Boot 프로젝트를 생성해보자. 1. File - New - Project 선택 2. Spring Initializr 탭 선택 - JDK 선택 - Default(start.spring.io/) 3. 자바 공통패키지 설정(Group명, Artifact명 입력) - 라이브러리 Dependency 선택(Maven or Gradle) - Java Language 선택 - 패키징 방식 선택(Jar or War) 4. Dependency 간편 설정 : 여기서 설정 안해줘도 추후로 build.gradle 또는 pom.xml에서 라이브러리 추가 가능 5. 프로젝트 경로 설정 간단한 스프링 부트 프로젝트 생성 완료! 생성된 파일 설명은 다음 과 같다. · TestApplicati..
Annotation ? 어노테이션(Annotation)은 JDK 5부터 추가된 문법 요소로 @를 이용하여 클래스, 메서드, 변수에 달리는 주석을 의미한다. 이러한 어노테이션은 프로젝트의 컴파일이나 런타임에 해석되는 메타 데이터라고 할 수 있다. Annotation 종류 Bean 관련 초기 스프링 개발에서 빈 생성은 xml 설정파일을 통해 가능했으나 현재는 자바 클래스에서 간단한 어노테이션으로 빈을 등록할 수 있다. 스프링의 빈은 싱글턴(Singleton)으로 만들어져 스프링 컨테이너에서 관리된다. @Configuration & @Bean 자바 클래스 선언부 위에 붙여 설정 클래스임을 스프링 컨테이너에게 알린다. 해당 클래스 내에 특정 타입을 리턴하는 메서드에 @Bean을 붙여주면 자동으로 해당 타입의 빈..