컴포넌트 스캔과 자동 의존관계 설정의존관계한 객체가 다른 객체를 필요로 하는 관계를 의미한다.컨트롤러 등록package hello.hello_spring.controller;import hello.hello_spring.service.MemberService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;@Controllerpublic class MemberController { private final MemberService memberService; @Autowired public MemberController(MemberServic..
비즈니스 요구사항 정리데이터: 회원 ID, 이름기능: 회원 등록, 조회아직 데이터 저장소 선정 X (가상의 시나리오)일반적인 웹 애플리케이션 구조컨트롤러 → 웹 MVC의 컨트롤러 역할서비스 → 서비스 클래스의 핵심 비즈니스 로직(ex: 중복 가입 불가)레포지토리 → 도메인 객체를 DB에 저장하고 관리도메인 → 비즈니스 도메인 객체회원 관리 예제의 클래스 의존 관계아직 데이터 저장소가 선정되지 않아서, 레포지토리는 인터페이스로 구현데이터 저장소는 RDB, NoSQL 등 다양한 저장소를 고민중인 상황개발을 진행하기 위해 초기 개발 단계에서 메모리 기반의 데이터 저장소 사용회원 도메인과 레포지토리 만들기domain/Member.javapackage hello.hello_spring.domain;public c..
웹을 개발하는 종류에는 크게 3가지 종류가 있다.정적 컨텐츠 → 하드코딩MVC와 템플릿 엔진 → JSP, PHP, HTML을 동적으로API정적 컨텐츠공식 문서에 Static Content 검색정적 컨텐츠는 모두 resources/static 에 작성된다.작동 순서웹 브라우저에서 서버에 요청을 보낸다.내장 톰켓 서버에서 관련 컨트롤러를 찾는다.관련 컨트롤러가 없으니 static 폴더에서 관련 정적 컨텐츠를 찾는다.컨텐츠를 브라우저로 반환한다.MVC와 템플릿 엔진MVCModel → 데이터와 비즈니스 로직 관리View → 화면을 그리는 요소Controller → 사용자의 요청을 처리하고 적절한 모델과 뷰 호출Controller @Controller public class HelloController { ..
Web Html인터넷이 시작되면서 웹도 시작됐다.웹은 절대적으로 HTML로 구현된다.웹에서 보여지는 정보들은 모두 하드코딩 되어있다.ServletWeb의 대중화로 인해 Web을 통한 데이터 입출력의 필요성이 생긴다.자바에서 웹 프로그래밍을 지원한다.자바 코드안에 html을 넣는다.웹은 절대적으로 HTML로 구현된다.Servlet에 HTML을 구현한다. → 개발자들이 죽어나간다.import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax...
클라이언트가 서버에게 보내는 요청은 크게 4가지로 이루어진다 → CRUDCRUDc는 create의 약자로 데이터를 서버에 올리는 요청을 한다.r은 read의 약자로 서버에서 데이터를 불러오는 요청을 한다.u는 update의 약자로 서버의 데이터를 바꾸는 요청을 한다.d는 delete의 약자로 서베의 데이터를 지우는 요청을 한다.데이터를 다룰 때 큰 틀에서 보면 대부분의 요청이 이 4가지 요청에 속한다.모든 데이터는 CRUD 관점에서 바라봐야하며 CRUD 특정 기능이 없는 기획이라면 그 의도가 명확해야 한다.CRUD의 요청 주소CRUD 요청은 각각의 주소를 가진다.도메인/create도메인/read도메인/update도메인/delete이러면 하나의 데이터 별로 주소가 4개씩 생기기 때문에 주소가 너무 많아진다..
SOLIDsolid는 약자로 이루어져있습니다.S → single responsiblity: 단일 책임의 원칙O → open closed: 개방 폐쇄 원칙L → Liskov subsituation: 리스코프 치환 원칙I → interface segregation: 인터페이스 분리 원칙D → dependency inversion: 의존 역전 원칙단일 책임의 원칙객체는 한 가지 역할(책임)만 가져야 한다. = 객체가 변경되는 이유는 단 한가지여야 한다.책임은 변경의 축이기 때문에 분할되는 것이 중요하다.→ 여러개의 책임을 가지게 된다면 요구사항의 변경이 일어났을 때 연쇄적인 변화가 발생할 것이다.어떻게 해결할 수 있나추상화를 통해 객체를 설계하는 과정에서 적절한 한 개의 역할만 갖도록 구상→ 책임의 분배는 정..