[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는 인터페이스로 설계 개발을 진행하기 위해 초기 개발 단계에서는 구현체로 가벼운 메모리 기반의 데이터 저장소 사용 회원..
[Spring] 스프링 입문 (2) - 스프링 웹개발 기초
·
Spring
스프링으로 웹 개발을 하는 방법은 크게 세가지가 있다. 정적 컨텐츠 : welcome page처럼 파일을 그대로 웹 브라우저에 전달해주는 방법 MVC와 템플릿 엔진 : 서버에서 파일을 동적으로 바꿔서 전달해주는 방법 (가장 많이 사용) API : json이라는 데이터 포맷으로 클라이언트에 전달할 때, 서버끼리 통신할 때 정적 컨텐츠 src>resources>static에 html 파일을 작성해서 넣어주면 그대로 반환해줌 (프로그래밍은 불가) hello-static.html 정적 컨텐츠 입니다. 정적 컨텐츠 출력 과정 localhost:8080/hello-static.html 요청을 내장 톰캣 서버에서 받고, Spring은 먼저 Controller에 hello-static.html이 있는지 찾아본다. (C..
[Spring] 스프링 입문 (1) - 프로젝트 환경설정
·
Spring
프로젝트 생성 프로젝트를 생성하기에 앞서 먼저 Java 11버전과 IntelliJ와 같은 IDE가 설치되어 있어야 한다. 스프링 부트 스타터 스프링 부트 스타터 사이트에서 Spring boot 기반으로 Spring 관련 프로젝트를 생성할 수 있다. Spring으로 개발할 때 이것저것 복잡한 설정이 필요한데, Spring boot는 간편하게 설정하여 쉽게 프로젝트를 생성하도록 도와준다. 임베디드 서버(내장된 서버 e.g. Tomcat)를 사용하여 독립적인 어플리케이션을 생성할 수 있다. 스프링 부트 스타터에 접속하면 이와 같은 화면이 뜬다. 현업에서는 Gradle을 더 많이 이용하기 때문에 Project는 Gradle로 설정하고, 언어와 버전 정보 등을 입력해준다. Project Metadata의 Grou..