
오늘은 어제에 이어 스프링 빈을 등록하는 또다른 방법에 대해 알아보자. 자바 코드로 직접 스프링 빈을 등록하는 방법으로 기존 소스에서 @Service, @Repository, @Autowired 어노테이션을 제거하고 시작하자. 어노테이션을 지우고 아래 경로에 SpringConfig.java 파일을 하나 생성한다. 그리고 내용을 아래와 같이 채워준다. package com.demoproject.demo; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import com.demoproject.demo.repository.MemberRepository; i..

오늘은 스프링 빈을 등록하는 방법에 대해 알아보도록 하자. 스프링 빈을 등록하는 2가지 방법이 있다. 컴포넌트 스캔과 자동 의존관계 설정 자바 코드로 직접 스프링 빈 등록 이중에서 1번 컴포넌트 스캔과 자동으로 의존관계를 어떻게 설정하는지 알아보도록 하자. service에서 돌아간 로직을 화면에 뿌려줄 것이다. 그러려면 controller와 view가 필요하다. 그래서 MemberController를 만들건데 MemberController는 MemberService를 통해 데이터를 등록하고 조회할 수 있어야 한다. 이러한 것을 의존관계가 있다고 표현하고 MemberController가 MemberService를 의존하고 있다고 표현한다. 이제 이러한 작업을 구현해보자. 먼저 Controller 경로에 M..

어제 생성했던 MemberService class 를 테스트 해 보도록 하겠다. test 경로에 폴더를 생성하고 파일을 생성하는 과정이 너무 귀찮던 와중 VSCode에서 test 파일을 자동으로 만들어 주는 기능을 발견하였다. 하나씩 따라해보자! 1. test 파일을 만들고자 하는 소스에서 우클릭한 후 Go To Test를 클릭한다. 2. 그럼 아래와 같은 화면이 나타나고 Generate tests...를 클릭한다. 3. 아래와 같이 package와 Test 파일 이름이 설정된 것을 확인하고 Enter를 누른다. 4. Test에 추가하고자 하는 메서드를 모두 체크한 후 확인을 누른다. 5. 잘 생성된 것을 확인할 수 있다. 이제 테스트 케이스를 작성해 보도록하자. package com.demoprojec..

오늘은 회원 서비스를 만들어 보도록 하자. controller와 같은 경로에 service 폴더를 생성한다. 그리고 MemberService class를 하나 생성한다. 회원가입 로직을 추가하여 내용을 구성해 보자. package com.demoproject.demo.service; import java.util.Optional; import com.demoproject.demo.domain.Member; import com.demoproject.demo.repository.MemberRepository; import com.demoproject.demo.repository.MemoryMemberRepository; public class MemberService { private final Member..

어제에 이어 회원 리포지토리에 작성한 사항을 테스트 해 볼수 있는 테스트 케이스를 작성해 보려고 한다. 개발한 기능을 실행해서 테스트를 할 때 자바의 main 메서드를 통해서 실행하거나, 웹 애플리케이션의 컨트롤러를 통해서 해당 기능을 실행한다. 이러한 방법은 준비하고 실행하는데 오래 걸리고, 반복 실행하기 어렵고 여러 테스트를 한번에 실행하기 어렵다는 단점이 있다. 자바는 JUnit이라는 프레임워크로 테스트를 실행하서 이러한 문제를 해결한다. 우선 테스트는 기존의 main 경로가 아닌 test 경로에서 진행한다, test 경로에 repository 폴더를 생성하고 MemoryMemberRepository를 테스트 하기 위한 MemoryMemberRepositoryTest 파일을 하나 생성해준다. 코드는..

오늘은 회원관리 예제를 하나 만들어 보도록 하겠습니다. 먼저 비즈니스 요구사항을 정리해 봅시다. 요구사항은 가장 간단하게 구현하였습니다. 데이터 : 회원 ID, 이름 기능 : 회원 등록, 조회 일반적인 웹 애플리케이션 계층 구조를 먼저 확인해 봅시다. 컨트롤러(Controller) : 웹 MVC의 컨트롤러 역할 서비스(Service) : 핵심 비즈니스 로직 구현 리포지토리(Repository) : 데이터베이스에 접근, 도메인 객체를 DB에 저장하고 관리 도메인(Domain) : 비즈니스 도메인 객체, ex) 회원, 주문, 쿠폰 등 주로 데이터베이스에 저장하고 관리됨 회원 비즈니스 로직이 있는 MemberService와 회원을 저장하는 부분은 interface로 설정하고 MemberRepository로 하..

오늘은 스프링 웹 개발에서 이야기 하는 API 방식에 대해 알아보도록 하겠습니다. 정적 컨텐츠 방식을 제외하면 MVC 방식과 API 방식 두가지를 거의 사용한다고 보면 됩니다. 그럼 실습해 보면서 자세히 알아보도록 하겠습니다. HelloController에 하나 추가해봅시다. @GetMapping("hello-spring") @ResponseBody public String helloSpring(@RequestParam("name") String name) { return "hello " + name; } @ResponseBody 의 의미는 http에서 header부분과 body부분에서 body 부분에 내가 직접 데이터를 넣어주겠다는 의미입니다. 기존 GetMapping 방식으로 실행하여 return에 ..

오늘은 스프링 웹 개발의 기초 개념 3가지에 대해 배워 보려고 합니다. 정적 콘텐츠 : 파일을 웹 브라우저에 그대로 전달해 주는 것입니다. MVC와 템플릿 엔진 : jsp, php가 템플릿 엔진인데 html을 서버에서 프로그래밍해서 html을 동적으로 바꿔서 전달해 주는 것입니다. API : json 포맷으로 클라이언트에게 데이터를 전달해 주는 방식입니다. 대략적으로 위의 3가지인데 하나씩 알아보도록 합시다. 1. 정적 콘텐츠 스프링 부트는 정적 콘텐츠 기능을 자동으로 제공을 합니다. static 경로에 html 파일을 하나 추가해 보도록 하겠습니다. 내용은 간단하게 입력해 봅시다. 정적 컨텐츠 입니다. 실행시켜 보겠습니다. 이런 화면은 앞 글에서도 얘기했으니 간단하게 보고 넘어가겠습니다. 2. MVC와..