스프링 핵심 원리(1)
·
Spring
회원 도메인 설계회원 도메인 요구사항- 회원 가입, 조회 가능- 회원은 일반회원, VIP회원 두 가지 등급으로 관리- 회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다. (미확정) 회원 등급package hello.core.member;public enum Grade { BASIC, VIP} 회원 Entitypublic class Member { private Long id; private String name; private Grade grade; public Member(Long id, String name, Grade grade) { this.id = id; this.name = name; this.gra..
스프링 기초
·
Spring
스프링을 사용한 개발에 기본적인 흐름을 배워보자 MVC, 템플릿 엔진- MVC : Model, View, Controller @Controllerpublic class HelloController { @GetMapping("hello-mvc") public String helloMvc(@RequestParam("name") String name, Model model) { model.addAttribute("name", name); return "hello-template"; } 스프링 MVC와 타임리프 템플릿 엔진을 사용한 코드이다. 1. @Controller - 이 클래스가 spring MVC의 컨트롤러임을 나타내는 어노테이션, 브라우저의 요청을 처리하고 뷰(..
스프링 - IoC
·
Spring
IoCIoC는 객체의 생성 및 관리 권한을 개발자가 직접 하지 않고, Spring Container가 대신 처리하는 개념즉, 객체의 생성, 초기화, 소멸 등의 작업을 Spring이 대신 해주기 때문에 비즈니스 로직에 집중할 수 있다. package org.springframework.samples.petclinic.sample;public class SampleController { SampleRepository sampleRepository; public SampleController(SampleRepository sampleRepository) { this.sampleRepository = sampleRepository; } public void doSomething(..
Maven 이란?
·
Spring
개발자들이 단순, 반복적으로 실행하는 빌드 작업을 자동화하여 업무를 효율화 하기 위해 생겨났다. 개발환경을 구축하는데 있어서 빌드 환경 자동화 말고 중요한 포인트가 있다.1. 빌드 환경 자동화2. 통합 개발 환경 구축 (이클립스, 인텔리제이)3. 형상관리 툴 구축 (git, svm같이 문서 관리 툴)4. CI 툴 구축 (젠킨스 등) 프로젝트 시작 시기에 업무분석과 설계작업을 시작하면서 개발환경까지 구축하는데 어느정도 시간이 소요된다.프로젝트에 참여하는 개발자들이 개발 환경에 익숙해질 수 있도록 교육을 하거나 여분의 시간을 할애해야한다.이를 통해 단기적으로 속도가 떨어질 수 있지만 장기적으로 봤을 때 효율성을 극대화 시킬 수 있다.또한 핵심 업무에 많은 시간을 투자할 수 있는 여유를 만들어주기도 한다. 프..
Path Variable과 Request Param
·
Spring
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 ..
Redis를 사용한 선착순 쿠폰발급 시스템
·
Spring
최종프로젝트 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..