일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 다익스트라 알고리즘
- nodejs
- ELB
- BFS
- 백준
- Router
- 정렬
- Spring Boot
- 토이프로젝트
- 탐욕법
- EC2
- 라우터
- 리액트
- react
- 서버구축
- java
- Algorithm
- sort
- mysql
- AWS
- 동적프로그래밍
- 스터디
- 브루트포스
- spring
- EventListener
- url parsing
- 알고리즘
- 백준알고리즘
- 자료구조
- 완전탐색
- Today
- Total
목록spring (8)
공부하는 블로그
@Transactional? 데이터 베이스에 트랜잭션 범위를 알린다. @Transactional이 선언된 메서드가 수행될 때, DB는 auto commit을 일시적으로 껐다가 메서드가 종료되는 시점에 메서드 결과에 따라 commit 또는 rollback을 수행하고 auto commit 옵션을 다시 켠다. Propagation @Transactional 어노테이션에 옵션 중 하나로 트랜잭션의 전파 레벨을 설정할 수 있다. 전파 레벨은 하나의 트랜잭션이 수행 중일 때, 같은 TransactionManager 내에서 추가 트랜잭션이 발생하게 된다면 어떤 방식으로 새로운 트랜잭션을 진행할 지 결정하는 것이다. 스프링에서는 7가지의 전파 레벨을 지원한다. REQUIRED 기존 트랜잭션이 있으면 그 트랜잭션을 사용..
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 : 예외 발생 로 나누어 테..
Annotation ? 어노테이션(Annotation)은 JDK 5부터 추가된 문법 요소로 @를 이용하여 클래스, 메서드, 변수에 달리는 주석을 의미한다. 이러한 어노테이션은 프로젝트의 컴파일이나 런타임에 해석되는 메타 데이터라고 할 수 있다. Annotation 종류 Bean 관련 초기 스프링 개발에서 빈 생성은 xml 설정파일을 통해 가능했으나 현재는 자바 클래스에서 간단한 어노테이션으로 빈을 등록할 수 있다. 스프링의 빈은 싱글턴(Singleton)으로 만들어져 스프링 컨테이너에서 관리된다. @Configuration & @Bean 자바 클래스 선언부 위에 붙여 설정 클래스임을 스프링 컨테이너에게 알린다. 해당 클래스 내에 특정 타입을 리턴하는 메서드에 @Bean을 붙여주면 자동으로 해당 타입의 빈..
Spring Boot? 스프링 프레임워크를 이용하면 어노테이션을 통한 DI와 AOP를 통해 개발자가 비즈니스 로직에만 집중하여 개발할 수 있다. 스프링 프레임워크가 이미 많은 문제를 해결하고 있음에도 불구하고 왜 스프링 부트(Spring Boot)가 나타나게 되었을까? Spring | Introduction Spring Framework? 스프링 프레임워크(Spring Framework)는 자바 기반의 경량급 어플리케이션 프레임워크로서 자바를 이용한 어플리케이션 개발을 더욱 간편하게 해주는 틀이다. 줄여서 스프링이라고 �� gongbu-ing.tistory.com 스프링 프레임워크는 기능이 많은 만큼 xml파일을 이용한 환경설정이 복잡한 편이다. 이러한 불편함을 해결하기 위해 스프링 부트(Spring B..
SpringFramework를 사용하기 위한 프로젝트를 Eclipse를 이용하여 생성해보자. 가장 먼저 Dynamic Web Project를 생성하도록 하자. 프로젝트명을 입력하고 Finish 서버 런타임은 아파치 톰캣 8을 이용한다. Apache Tomcat® - Apache Tomcat 8 Software Downloads Welcome to the Apache Tomcat® 8.x software download page. This page provides download links for obtaining the latest versions of Tomcat 8.x software, as well as links to the archives of older releases. Unsure which..