Back-End/Spring 90

[Spring][스프링 기본편] - 4. 테스트(Feat. 순수 자바코드 테스트와 Junit을 사용한 테스트)

1. 순수한 자바 코드로 테스트 코드 구현 우리는 동적인 테스트를 통해서 구현한 부분에 문제가 없는지 살펴보아야 한다. 그래서 테스트코드를 작성해서 진행하는데 이는 대부분 TEST 디렉토리 안에서 작업이 진행된다. 그렇게 진행을 해야 실제 배포에 Test 코드가 포함되지 않아 문제가 생기지 않기 때문이고 또 다른 진행에 문제가 생기지 않기 때문이다. package hello.core; import hello.core.member.Grade; import hello.core.member.Member; import hello.core.member.MemberService; import hello.core.member.MemberServiceImpl; public class MemberApp { //psvm ..

Back-End/Spring 2022.01.13

[Spring][스프링 기본편] - 3. 회원 도메인 구현

1. 회원 도메인 설계 우리가 앞서 설계해놓은 것을 통해서 실제 구현을 해보자. 2. 회원 도메일 구현 실제 코드를 모두 올리기에는 유료학습이라 문제가 생길 거 같아 대충 패키지 구성만 올려놓을까 합니다. 설계에서 보듯 우리가 역할부와 구현부로 나눈 것을 코드로 옮기면 됩니다. 구현 작업에서는 여기까지 우리가 진행했다면 아래서는 객체 다이어그램을 통한 테스트 작업을 할 예정이다. (클래스 다이어그램은 정적인 것) (객체 다이어 그램은 동적인 것) 4. 출처 https://inf.run/7GX1 스프링 핵심 원리 - 기본편 - 인프런 | 강의 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., 스프링 핵심 원리를 이해하고, 성장하는 백엔드 개발자..

Back-End/Spring 2022.01.13

[Spring][스프링 기본편] - 2. 비지니스 요구사항과 회원 도메인 설계

1. 비지니스 요구사항 요구사항을 비지니스적 용어로 정의하고 또 이를 역할(Interface)과 구현으로 나누어 살펴보도록하자. 비즈니스 요구사항과 설계 회원 회원을 가입하고 조회할 수 있다. 회원은 일반과 VIP 두 가지 등급이 있다. 회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다. (미확정) 주문과 할인 정책 회원은 상품을 주문할 수 있다. 회원 등급에 따라 할인 정책을 적용할 수 있다. 할인 정책은 모든 VIP는 1000원을 할인해주는 고정 금액 할인을 적용해달라. (나중에 변경 될 수 있다.) 할인 정책은 변경 가능성이 높다. 회사의 기본 할인 정책을 아직 정하지 못했고, 오픈 직전까지 고민을 미루고 싶다. 최악의 경우 할인을 적용하지 않을 수 도 있다. (미확정) 2..

Back-End/Spring 2022.01.13

[Spring][스프링 기본편] - 1. 객체지향 설계와 스프링

1. 스프링 이전의 상황 EJB를 사용해서 프로그래밍을 진행했지만 이는 너무 비싼 문제와, 인터페이스를 모두 구현해야하고, 또한 EJB에 의존적인 프로그래밍을 해야 한다는 수많은 단점에 빡(?)이 친 스프링 개발자가 이보다 훨 ~ 씬 쉬운 개발을 위해 스프링을 만들게 되었다. 2. 스프링 스프링은 여러 의미로 불린다. 그러나 스프링에서 필수적인요소와 선택적 요소를 나눌 수는 있다 아래를 통해 살펴보도록 하자. 스프링(프레임워크) 스프링은 언어와 관련된 것을 의미하는 경우가 많다. 필수적인 요소로 단독 사용이 가능하다. 그러나 스프링부트 없이 사용하면 불편한 경우가 많다. 스프링부트 스프링(스프링 프레임워크)는 스프링부트와 함께 필수적인 요소로 스프링부트는 스프링을 편하게 쓰기 위한 부가적인 요소지만 현재..

Back-End/Spring 2022.01.12

[SpringBoot][스프링 입문] - 5.2 회원 웹 기능 - 등록

package hello.hellospring.controller; import hello.hellospring.domain.Member; import hello.hellospring.service.MemberService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @Controller //컴포넌트 스캔 public class Membe..

Back-End/Spring 2021.12.28

[SpringBoot][스프링 입문] - 5.1 회원 웹 기능 - 홈 화면 추가

1. 홈 컨트롤러 추가 @GetMapping("/") 스프링 컨테이너에서 먼저 찾고자 하는 요소를 찾아보고 (templates 안에 return "home"이 찾는 home.html이 있으니 이를 메인 페이지로 첫화면에 보여준다.) 없으면 정적 컨테이너를 보여준다. (welcome page가 이에 해당한다.) package hello.hellospring.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; @Controller public class HomeController { @GetMapping("/") public String home..

Back-End/Spring 2021.12.27

[SpringBoot][스프링 입문] - 4.2 자바 코드로 직접 스프링 빈 등록하기

1. 직접 등록에 앞서서 Annotation 제거하기 진행에 앞서서 멤버 서비스에서 컴포넌트 스캔으로 연결해주었던 관계를 다 지우고 시작해야 한다. 그러면 위의 사진과 같이 Bean에 등록되어 있지 않는다고 메시지가 뜬다. 2. 자바 코드로 직접 스프링 빈 등록하기 package hello.hellospring.service; import hello.hellospring.repository.MemberRepository; import hello.hellospring.repository.MemoryMemberRepository; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Co..

Back-End/Spring 2021.12.25

[SpringBoot][스프링 입문] - 4.1 컴포넌트 스캔과 자동 의존관계 설정

1. 스프링빈과 의존관계 스프링빈을 설정하고 의존관계를 설정하기 회원 컨트롤러가 회원서비스와 회원 리포지토리를 사용할 수 있게 의존관계를 준비하자. 화면을 붙이고 싶을 때 필요한 두 가지 : 컨트롤러 + 뷰 템플릿 (회원가입과, 회원가입을 위한 Html 파일) 멤버서비스를 통해서 회원가입 멤버서비스를 통해서 데이터 조회할 수 있는 것을 의존관계가 있다고 한다. 2. 인텔리제이 IS Never USED 경고가 뜰 땐 [intelliJ] 인텔리J XXX is never used 경고 없애는 방법 intelliJ XXX is never used 경고 없애는 방법 intelliJ를 통해 개발을 하던 중 다음과 같이 Method 'xxx' is never used 라는 식의 경고를 보신적이 있으실 겁니다. 이는 ..

Back-End/Spring 2021.12.25

[SpringBoot][스프링 입문] - 3.4 회원 서비스 개발 / 3.5 회원 서비스 테스트

1. 회원서비스 회원리포지토리 + 비지니스 로직 2. 서비스 / 리포지토리 클래스의 네이밍 서비스 -> 비지니스에 의존적으로 접근한다. ( 개발자 / 기회작 모두가 매칭이 잘 되는 것을 보기 위해서) 리포지토리 -> 개발스럽게 만든다. 3. 회원 서비스 구현 코드 package hello.hellospring.service; import hello.hellospring.domain.Member; import hello.hellospring.repository.MemberRepository; import hello.hellospring.repository.MemoryMemberRepository; import java.util.List; import java.util.Optional; public clas..

Back-End/Spring 2021.12.23