Spring

Spring

[Redis] Redisson 분산 락을 간단하게 적용해보기

문제 상황 어떤 데이터에 대해 매우 빠르게 수정이 일어날 때 동시성 문제가 발생할 수 있다. 예를 들어 A라는 데이터를 수정하는 로직이 0.1초 소요되는데, 0.001초 간격으로 A라는 데이터를 수정하는 요청이 여러 번 들어왔을 때 값이 제대로 수정되지 않을 수 있다. 이럴 때, DB 데이터 수정의 순차적 처리를 보장하기 위한 방법으로 Lock이 있다. Lock 트랜잭션 락과 비슷한 개념으로 어떤 데이터 수정, 접근 등에 Lock을 필요로 하게 설정하는 것이다. 데이터를 수정하려면 우선 Lock을 획득하고 수정 후에 Lock을 반납한다. 만약 Lock을 획득할 수 없는 상황에서는 Lock을 획득할 수 있을 때까지 대기하거나 수정을 취소할 수 있다. 분산 락(Distributed Lock) 하나의 공유 자..

Spring

[Spring Security] 스프링 시큐리티 SecurityContext에 직접 Authentication(PrincipalDetails) 넣기

REST API 방식에서의 Kakao Login과 SpringSecurity에 대한 글을 찾다가 들어오신 분을 위해 말씀드립니다.이 글은 Thymeleaf를 통해 뷰를 구성하고, Spring MVC @Controller 방식의 formLogin과 KakaoLogin을 혼용하기 위한 방법에 대해 설명하고 있습니다. REST API 방식과는 많이 다른것으로 알고있으니 참고하세요! 이전 글..Kakao Login API 사용하기2023.10.15 - [Spring/SpringBoot] - [Spring] 카카오 로그인 API 사용 방법 [Spring] 카카오 로그인 API 사용 방법Kakao Developers 이미지 설명에 각 이미지 내용에 대한 위치(경로) 적어뒀으니 참고해 주세요. 1. KakaoDeve..

Spring

[Spring] 카카오 로그인 API 사용 방법

Kakao Developers이미지 설명에 각 이미지 내용에 대한 위치(경로) 적어뒀으니 참고해 주세요. 1. KakaoDevelopers 접속https://developers.kakao.com/ Kakao Developers카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.developers.kakao.com 2. 애플리케이션 추가하기 3. 애플리케이션 추가 4.Rest API 키 확인 5. Web 플랫폼 등록 6. 사이트 도메인 설정 7. 카카오 로그인 활성화, Redirect URI 등록 8. 동의 항목 설정사용하려는 개인 정보 동의 설정 ( email, nickname 정보 ) 9. (추가) 카카오 로그인 버..

Spring

[JUnit] 테스트 코드 작성과 단위테스트 Unit Test

JUnitJava용 유닛 테스트 프레임워크이다.소프트웨어 개발 시에 단위테스트(Unit Testing)는 중요한 절차이다.프로그램을 작은 unit 단위로 쪼개어 각각 잘 동작하는지 검사함으로써 프로그램의 안정성을 높인다.1) 테스트 주도 개발 (TDD)테스트 주도 개발(Test-Driven Development)란, 테스트 케이스를 작성하고 소스코드가 이를 통과하는지 반복하여 확인하며 개발하는 것을 말한다. TDD는 기능의 구현 목표에 집중하여 개발 생산성을 높이고, 이후 리팩토링과 유지보수에 이점을 가져다준다.테스트코드를 처음 접했을 때, 사소하고 틀일일이 없다고 생각하는 부분까지 테스트를 하는 것을 보고 놀랐다.2) 단위 테스트(Unit Testing)각 작은 단위가 구현 목표에 맞게 잘 동작하는지 ..

Spring

[Spring Boot] @RequestMapping 매핑

@RequestMapping 메서드 위에 @RequestMapping("/url") 이 붙으면 /url이 호출 됐을 때 해당 메서드를 실행하도록 매핑한다. 해당 클래스가 @Controller로 지정되어 있다면 , 메서드가 String을 반환했을 때 반환 값은 view 이름으로 인식된다. @RestController로 지정되어 있다면, Rest API요청에 대한 응답 (JSON)을 반환한다. ex1) URL 다중 설정 대부분 속성을 배열로 제공하므로 다중 설정이 가능하다. @RequestMapping("/hello","/hi") public String hello(){ log.info("hello"); return "ok"; } ex2) HTTP 메소드 매핑 @RequestMapping이 특정 HTTP 메..

Spring

[Spring] application.properties와 application.yml의차이

.properties / .yml application.properties와 application.yml 두 가지 방식은 사실 똑같다. (크게 다르지 않다.) 두가지 방식 모두 프로젝트의 설정을 담당하는 파일이다. IntelliJ에서 기본적으로 Spring Initializr를 통해 Spring Boot 프로젝트를 생성하면 application.properties가 생성되지만, application.yml도 많이 사용되는 것 같다. 차이점 두가지 모두 똑같은 설정 정보를 입력하지만, 구조가 다르다. properties는 key=value의 형태로 이루어져 있고, yml은 계층 구조로 이루어져 있다. 아래 예제로 간단하게 확인해 보자. yml group1: group2: group3: message1: h..

Spring

[Spring] DB 연동 (MariaDB), MyBatis 사용

Spring DB 연동 Spring에서 DB 연결하는 방법을 간단히 알아보자. 1. gradle 설정 build.gradle에 아래와 같이 의존성을 추가해 주자. dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' //JDBC implementation 'org.springframework.boot:spring-boot-starter-jdbc' //mariadb runtimeOnly 'org.mariadb.jdbc:mariadb-java-client' } 2. DB datasource 설정 Spring project의 application.properties에서 아래와 같이 datasource 정보를 설정해 주자..

Spring

[Spring MVC] @RequestBody와 @RequestHeader로 JSON 주고받기

@RequestParam, @PathVariable 기본적으로 @RequestParam과 @PathVariable을 통해 파라미터를 주고받는 방법으로 데이터를 처리할 수 있다. 2023.04.21 - [Spring_Web/SpringBoot] - [Spring] @PathVariable과 @RequestParam - 파라미터 받기 그러나, 데이터의 양이 많거나, 데이터를 사용자에게 드러내지 않고 싶을 때는 @RequestBody와 @RequestHeader로 JSON을 받아서 데이터를 처리할 수 있다. @RequestBody, @RequestHeader Header Content-Type: application/json userAccountId: accouunt123 ====================..

HSRyuuu
'Spring' 카테고리의 글 목록 (2 Page)