[Spring] 핵심 원리 기본 (2) - 예제 프로그램 만들기
·
Spring
예제 프로그램 만들기 프로젝트 생성 먼저 Spring initializer페이지에 들어가 빌드 도구, 언어와 버전 등을 선택하고 메타 데이터 정보를 입력한 후 Generate한다. (현재 최신버전인 2.6.4 버전은 빌드 시 오류가 발생해서 하위 버전인 2.5.10을 사용했다) 비즈니스 요구사항 회원 회원을 가입하고, 조회할 수 있다. 회원은 일반과 VIP 두가지 등급이 있다. 회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다. (미확정) 주문과 할인 정책 회원은 상품을 주문할 수 있다. 회원 등급에 따라 할인 정책을 적용할 수 있다. VIP 등급의 고객은 1000원을 할인해주는 정책을 적용한다. 할인 정책은 변경 가능성이 높다. 회사가 기본 정책을 아직 정하지 못했고 최악의 경..
[HTTP] 인터넷 네트워크
·
WEB
📌 인터넷 통신 클라이언트는 서버에게 요청(request)을 보내고, 서버는 클라이언트에 요청에 대한 응답(response)을 한다. 메세지를 전송할 때 복잡한 인터넷 망을 거치게 되는데, 메세지가 잘 전송되기 위해서는 일련의 규칙이 필요하다. 📌 IP(Internet Protocol) 복잡한 인터넷을 거쳐 메세지를 잘 전송하기 위해서 각 클라이언트와 서버는 각각 IP 주소를 부여받는다. 이때 IP는 지정한 IP 주소에 데이터를 전달하고, 패킷이라는 통신 단위로 데이터를 전달하는 역할을 한다. 전송하려는 데이터에 출발지 IP, 목적지 IP 등의 정보를 더해 IP 패킷으로 만든다. 📌 IP의 한계 하지만 IP에는 한계점들이 있다. 비연결성 : 패킷이 받을 대상이 없거나, 서비스 불능 상태여도 전송이 이루어..
[Git & Github] Git과 Github 기본 사용법
·
Git
Git과 Github Git은 분산 버전 관리 시스템이고, Github는 Git 저장소를 지원하는 웹 호스팅 서비스이다. Git과 Github를 왜 사용할까? 변경 사항 추적 : 어떤 코드를 누가, 언제 수정했는지 추적이 가능하기 때문에 디버깅을 편리하게 할 수 있다. 병행 개발 : 여러 개발자들이 동시에 한 프로젝트를 작업할 수 있으며 진행 상황을 쉽게 공유할 수 있다. 백업 및 복구 : 코드를 이전의 상태로 돌리고 싶을 때 특정 시점으로 돌아갈 수 있고 또는 파일이 날아갔을 때 손쉽게 복구할 수 있다. Git에서 Github에 코드 업로드 과정 1. git init : 프로젝트 폴더 초기화 하기 초기화를 해주면 .git이라는 숨겨진 폴더가 생성된다. 이때 .git 폴더가 로컬 저장소이다. 로컬 저장소..
[Spring] 핵심 원리 기본 (1) - 객체 지향 설계와 스프링
·
Spring
스프링 생태계 🌱 스프링은 여러 기술들의 모음이다. 스프링 데이터 : 각종 관계형 데이터베이스의 CRUD(등록, 조회, 수정, 삭제)를 편리하게 사용할 수 있게 해줌. 가장 많이 사용하는 것은 스프링 데이터 JPA 스프링 세션 : 세션 기능을 편리하게 사용할 수 있도록 해줌 스프링 시큐리티 : 보안과 관련된 것 스프링 Rest Docs : API 문서화를 편리하게 해줌 스프링 배치 : 배치 처리에 특화된 기술 스프링 클라우드 : 클라우드 기술에 특화된 기술 이 외에도 많은 기술들이 있다. (스프링 홈페이지) 스프링 프레임워크 🔨 최근에는 스프링 부트를 통해 스프링 프레임워크의 기술들을 편리하게 사용할 수 있다. 핵심 기술 : 스프링 DI 컨테이너, AOP, 이벤트, 기타 웹 기술 : 스프링 MVC, 스프..
[Spring] 스프링 입문 (7) - AOP
·
Spring
AOP의 필요성 모든 메서드의 호출 시간을 측정하고 싶은 경우 모든 메서드에 각각 일일이 시간을 측정하기 위한 로직을 추가하는 작업이 필요하다. MemberService의 join 메서드에 시간 측정 로직 추가 public Long join(Member member) { long start = System.currentTimeMillis(); try { // 같은 이름이 있는 중복 회원X validateDuplicateMember(member); // 중복회원 검증 memberRepository.save(member); return member.getId(); } finally { long finish = System.currentTimeMillis(); long timeMs = finish - star..
[Spring] 스프링 입문 (6) - 스프링 DB 접근 기술
·
Spring
Spring 입문 (5) - 회원 관리 예제 (웹 MVC 개발) 홈 화면 추가 홈 컨트롤러 추가 (controller>HomeController) index.html 파일이 static 디렉토리에 존재하지만 컨트롤러가 우선순위가 높기 때문에 컨트롤러의 @GetMapping 메서드가 실행된다 package hello.hell.. suaring.tistory.com 지금까지 구현한 웹은 메모리에서 구현했기 때문에 서버를 재시작하면 데이터가 저장되지 않고 날아간다. 실무에서는 데이터베이스에서 데이터를 저장하고 관리한다. 스프링에서 데이터베이스에 연결하는 방법을 알아보자. H2 데이터베이스 설치 H2 데이터베이스 : 개발이나 테스트 용도로 가볍고 편리한 DB, 웹 화면 제공 (다운로드 링크) 다운로드 후 윈도우..
[Spring] 스프링 입문 (5) - 회원 관리 예제 (웹 MVC 개발)
·
Spring
홈 화면 추가 홈 컨트롤러 추가 (controller>HomeController) index.html 파일이 static 디렉토리에 존재하지만 컨트롤러가 우선순위가 높기 때문에 컨트롤러의 @GetMapping 메서드가 실행된다 package hello.hellospring.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; @Controller public class HomeController { @GetMapping("/") public String home() { return "home"; } } 홈 화면 추가 Hello Spring 회원..
[Spring] 스프링 입문 (4) - 스프링 빈과 의존 관계
·
Spring
이제 회원가입을 하고 결과를 html로 나타내주는 일을 해줄 것이다. MemberController는 MemberService를 통해 회원가입하고 조회할 수 있어야 한다. 이것을 MemberController가 MemberService를 의존한다고 한다. MemberController @Controller를 사용하여 클래스를 만들면 스프링은 스프링 컨테이너에 객체(스프링 빈)를 만들어서 관리한다. 스프링 컨테이너에 등록되면 객체를 new로 생성하지 않고 스프링 컨테이너에서 받아서 사용해야 한다. 그렇지 않으면 다른 컨트롤러에서도 MemberService를 사용하게 될 수 있다. → 생성자로 DI 될 수 있도록 해주기 생성자에 @Autowired가 있으면 스프링이 연관된 객체를 스프링 컨테이너에서 찾아 연..
[Spring] 스프링 입문 (3) - 회원 관리 예제 (백엔드 개발)
·
Spring
비즈니스 요구사항 정리 데이터 : 회원ID, 이름 기능 : 회원 등록, 조회 아직 데이터 저장소가 선정되지 않음 (가상의 시나리오) 컨트롤러 : 웹 MVC의 컨트롤러 역할 서비스 : 핵심 비즈니스 로직 구현 (e.g. 회원은 중복 가입이 되지 않음) 도메인 : 비즈니스 도메인 객체 (e.g. 회원, 주문, 쿠폰 등 주로 데이터베이스에 저장하고 관리됨) 리포지토리 : 데이터베이스에 접근, 도메인 객체를 DB에 저장하고 관리 데이터 저장소는 RDB, NoSQL 등 다양한 저장소를 고민중인 상황으로 가정 아직 데이터 저장소가 선정되지 않았기 때문에 회원을 저장하는 MemberRepository는 인터페이스로 설계 개발을 진행하기 위해 초기 개발 단계에서는 구현체로 가벼운 메모리 기반의 데이터 저장소 사용 회원..