SpringBoot 5

Maven 이란?

개발자들이 단순, 반복적으로 실행하는 빌드 작업을 자동화하여 업무를 효율화 하기 위해 생겨났다. 개발환경을 구축하는데 있어서 빌드 환경 자동화 말고 중요한 포인트가 있다.1. 빌드 환경 자동화2. 통합 개발 환경 구축 (이클립스, 인텔리제이)3. 형상관리 툴 구축 (git, svm같이 문서 관리 툴)4. CI 툴 구축 (젠킨스 등) 프로젝트 시작 시기에 업무분석과 설계작업을 시작하면서 개발환경까지 구축하는데 어느정도 시간이 소요된다.프로젝트에 참여하는 개발자들이 개발 환경에 익숙해질 수 있도록 교육을 하거나 여분의 시간을 할애해야한다.이를 통해 단기적으로 속도가 떨어질 수 있지만 장기적으로 봤을 때 효율성을 극대화 시킬 수 있다.또한 핵심 업무에 많은 시간을 투자할 수 있는 여유를 만들어주기도 한다. 프..

SpringBoot 2024.08.28

Path Variable과 Request Param

Client에서 서버로 HTTP 요청을 보낼 때 데이터를 함께 보낼 수 있다.서버에서는 이 데이터를 받아서 사용해야하는데 데이터를 보내는 방식은 여러가지가 있기에 여러 방식에 대한 학습이 필요함 Path Variablehttp://localhost:8080/hello/request/star/Robbie/age/95 // [Request sample]// GET http://localhost:8080/hello/request/star/Robbie/age/95 @GetMapping("/star/{name}/age/{age}") @ResponseBody public String helloRequestPath(@PathVariable String name, @PathVariable int ..

SpringBoot 2024.08.06

Redis를 사용한 선착순 쿠폰발급 시스템

최종프로젝트 BuySell의 선착순 쿠폰발급 기능구현을 위한 연습을 해보기로 했다. 요구사항 선착순 100명에게 쿠폰을 지급하는 이벤트이다. 101개 이상 지급되면 안된다. 순간적으로 몰린 트래픽으로 인해 다른 페이지의 성능에 지장을 주면 안된다. Entity @Entity class Coupon( val userId: Long, ) { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) var id: Long? = null } Repository interface CouponRepository: JpaRepository Service @Service class ApplyService( private val couponRepository: CouponRep..

SpringBoot 2024.03.21

Oauth2.0 소셜로그인 구현

Oauth 2.0의 4가지 프로토콜 중 Authorization code grant 방식에 대한 정리 글 Authorization Code Grant 권한부여를 하기 위해 자체 생성한 Authorization Code를 전달하는 방식 용어정리 Resource: OAuth Provider로 부터 가져오고자 하는 자원 Resource Owner: Resource의 주인. (사용자) OAuth Provider: 쉽게 말해 소셜로그인 기능이라면 카카오, 구글이 된다 (인증을 담당하는 Authorization Server도 별개로 가지고 있다.) Authorization Server: 인증을 처리해주는 서버 Client: Resource를 사용하기 위해 OAuth Provider에 접근하는 application ..

SpringBoot 2024.02.17

Spring 입문 - DI (의존성 주입), IoC (제어의 역전), Bean

Dependency Injection (의존성 주입) 객체가 자체적으로 필요로 하는 의존성을 생성하는 것이 아니라, 외부에서 주입받는 디자인 패턴입니다. 객체간의 결합도를 낮추기 위해 사용합니다. 주로 Contructor 기반 주입, Field 기반 주입, Setter 기반 주입이 있습니다. DI를 사용하지 않을 경우 package org.example.ChickenStore class ChickenStoreWithoutDI { private val chicken: Chicken = FriedChicken() fun getCookedChicken(): Chicken { chicken.cook() return chicken } } class ChickenStoreWithoutDI2 { private val..

SpringBoot 2023.12.26