본문 바로가기

Development/Spring14

redis 설치 및 redisson을 이용한 분산락 구현 설치 redis 설치 위 블로그 따라 순조롭게 설치 후 확인 완료 Redis와 분산락 분산락(Distributed Lock) 여러 독립된 프로세스에서 하나의 공유 자원에 접근할 때, 데이터에 결함이 발생하지 않도록 원자성을 보장하기 위해 분산락을 활용 분산락을 구현하기 위해서 redis는 RedLock이라는 알고리즘을 제안하며 3가지의 특성을 보장해야 한다고 말함 오직 한 순간에 하나의 작업자만이 락을 걸 수 있다. 락 이후, 어떠한 문제로 인해 락을 풀지 못하고 종료된 경우라도 다른 작업자가 락을 획득할 수 있어야 한다. 레디스 노드가 작동하는 한 모든 작업자는 락을 걸고, 해체할 수 있어야 한다. RedLock 알고리즘 수행 과정 RedLock 알고리즘은 비동기식 알고리즘 현재 시간(ms)을 가져온다.. 2021. 10. 9.
@RequestParam Date 타입 받기 @RequestParam RequestParam을 포맷하는데 사용할 ISO 패턴 enum 타입으로 정의되어 있다고 한다. pattern iso 형식으로 표시되지 않는 날짜 시간 패턴을 받고자 할 때 사용한다. 데이터 타입 사용자 정의 패턴으로 패턴은 엄격하게 지켜줘야 한다 pattern example yyyy-MM-dd (ex. 2020-06-23) yyyy-MM-dd HH:mm:ss : (ex. 2020-06-23 18:03:32) yyyy-MM-dd HH:mm:ssZ : (ex. 2020-06-23-18:03:32+09:00) 방법 받고자 하는 Date 타입 앞에 @DateTimeFormat(pattern = "yyyy-MM-dd") Date 타입의 포맷을 지정 public ResponseEntity.. 2021. 9. 25.
Spring Data JPA 쿼리메소드 Spring Data JPA ? spring framework에서 JPA를 편리하게 사용할 수 있도록 지원 CRUD 처리를 위한 공통 인터페이스 제공 repository 개발 시 인터페이스만 작성하면, 실행 시점에 spring data JPA가 구현 객체를 동적으로 생성해서 주입 데이터 접근 게청(repository) 구현 시 클래스 없이 인터페이스만 작성하여 개발을 완료하도록 지원 공통메소드는 spring data jpa가 제공하는 의존성 라이브러리에 포함되어 있음 사용하기 위해선 라이브러리를 의존성 추가해줘야 함 (build.gradle) implementation 'org.springframework.boot:spring-boot-starter-data-jpa'JpaRepository.. 2021. 9. 25.
Spring의 Transaction Spring의 Transaction Spring은 코드 기반의 트랜잭션처리(Programmatic Transaction) 뿐만 아니라 선언적 트랜잭션(Declarative Transaction)을 지원 Spring이 제공하는 트랜잭션 템플릿 클래스를 이용하거나 설정파일, 어노테이션을 이용하여 트랜잭션의 범위 및 규칙을 정의할 수 있음 Spring에서는 주로 선언적 트랜잭션을 이용하는데, tx:advice태그 또는 @Transactional 어노테이션을 이용 Transaction(트랜잭션) 핵심 기술 트랜잭션 동기화 : 트랜잭션을 시작하기 위한 Connection 객체를 틀별한 저장소에 보관해두고, 필요할 때 꺼내쓸 수 있도록 하는 기술 트랜잭션 동기화 저장소는 작업쓰레드마다 Connection 객체를 독.. 2021. 9. 23.
Spring? Spring Boot? Spring MVC? Spring Spring은 Spring Framework, Spring Boot, Spring data 등 여러 프로젝트들의 모음이다 Spring Framework을 이용하면 웹개발 뿐만 아니라 클라우드 등 다양한 프로젝트 개발 가능하다. Spring의 핵심요소는 앱 수준의 인프라 지원이다. 앱 수준의 비즈니스 로직에 집중할 수 있게 하는 다양한 방법을 제공 JDBC, JSP 및 Java Servlet과 같은 기존 Java 프레임워크 및 API에 비해 웹 애플리케이션 개발이 훨씬 쉬워짐 DI와 IoC를 통해 객체간의 결합도를 느슨하게 만들어주어 코드의 재사용성을 높이고, 단위테스트를 용이하게 해줌 AOP (Aspect-Oriented Programming), POJO (Plain Old Java Obje.. 2021. 9. 23.
[JAVA 에러] java.lang.IllegalStateException: Ambiguous mapping found. 문제상황 IllegalStateException 에러가 발생했다는 뜻 ... java.lang.IllegalStateException: Ambiguous mapping. Cannot map 'performanceController' method ~~~해결방법 알고보니, Controller의 @RequestMapping 의 값이 중복되어 나타나는 에러라고 한다! [에러가 발생할 수 있는 상황] 1. mapper id가 다를경우 - mapper파일(MyBatis의 쿼리문을 등록한 XML파일)에 2021. 9. 23.