3. 스프링 빈과 의존관계 1) 컴포넌트 스캔과 자동 의존관계 설정 . 회원에게 가시적인 서비스를 제공하기 위해서는 view template 와 controller (member controller)가 필요하다. member controller = memberService를 통해 회원 가입, 데이터 조회해야 함 → "의존관계가 있다." member controller가 MemberService를 의존한다. member controller가 memberService와 memberRepository를 사용 가능하게 의존관계를 준비한다. 1. MemberController 만들기 - 컴포넌트 스캔과 자동 의존관계 설정 - controller/... 에 MemberController 클래스 생성 → @Contr..
Spring
4. 회원 관리 예제 - 백엔드 개발 4) 회원 서비스 개발 회원 서비스 클래스 생성 회원 서비스: 회원 리포지토리 + 도메인 활용해 비즈니스 로직을 작성하는 부분 (Repository에 비해) 서비스 클래스는 비즈니스에 가깝게 네이밍 해야 함 (∵ 비즈니스 처리하므로) Service 패키지 생성 > MemberService 클래스 생성해 작업 1. MemberRepository 객체 생성 - final : 여러 context에서 단 한번만 할당 될 수 있는 entity를 정의할 때 사용 ➔ 객체 변수 final : 해당 변수에 다른 참조 값 지정 불가능 (재변경 불가능, 다른 객체로 변경 불가능) (✔ 객체의 속성(=필드)는 변경 가능) 2. 메서드 정의 - (1)회원 가입 메서드 (join) 정의 -..
Stream이란? 배경 Array (혹은 Collection)의 elements들을 이용해야 하는 경우 기존에는 for/ foreach문을 통해 반복적으로 Array(or Collection)안 요소들을 하나씩 꺼내서 다뤄야 했음. 시간 복잡도 증가, 루프 여러번 돌 가능성 존재함 ♘Collection - 데이터의 집합, 그룹 - List, Set, Queue 크게 3가지 상위 인터페이스로 분리 가능 Ⅰ) Set [구현 클래스: HashSet, TreeSet] - 순서 없는 데이터의 집합 (중복 비허용 - 수학적 집합) Ⅱ ) List [LinkedList, Vector, ArrayList] - 순서 있는 데이터 집합 (중복 허용) Ⅲ ) Queue [LinkedQueue, PriorityQueue] -..
4. 회원 관리 예제 - 백엔드 개발 1) 비즈니스 요구사항 정리 비즈니스 요구사항 정리 데이터 : 회원 ID, 이름 기능 : 회원 등록, 조회 아직 DB가 선정되지 않았음을 가정하고 개발 일반적인 웹 애플리케이션 계층 구조 컨트롤러: 웹 MVC의 컨트롤러 역할, API 생성 시 컨트롤러 역할 서비스 : 서비스 클래스의 핵심 비즈니스 로직이 들어가 있음 (ex. 회원 가입 중복 불가) 도메인 : DB에 주로 저장되고 관리되는 (ex. 회원, 주문, 쿠폰 ...) 비즈니스 도메인 객체 리포지토리 : DB에 접근, 도메인 객체를 DB에 저장하고 관리 비즈니스 도메인 객체를 가지고 핵심 비즈니스 로직이 돌아가도록 구현한 계층 클래스 의존관계 아직 DB가 선정되지 않음 → 인터페이스로 설계 (회원 리포지토리에)..
3. API 정의 안드로이드, ios 개발 시 서버는 json [= data format] 으로 고객에게 전달하는 방식 + 서버끼리 통신할 때도 사용 정적 컨텐츠 제외) 방식 2가지 : html로 vs 데이터 바로 1. MVC 방식 → View를 찾은 뒤, template engine으로 화면 랜더링 → html을 웹브라우저에 넘겨주는 방법 2. API 방식 → 데이터 바로 내림 API와 MVC 방식의 차이 API는 별도의 View 생성 없이 http로 문자가 그대로 넘어간다 HelloController에 helloString 생성 (전달 값이 문자일 경우) 마찬가지로 @GetMapping으로 url과 매칭시켜주고, @RequestParam으로 입력값을 받아온다 차이점은 @ResponseBody가 추가 ..
섹션 2. 스프링 웹 개발 기초 더보기 정적 컨텐츠 MVC와 템플릿 엔진 : 가장 자주하는 방법 API 회원 관리 예제 - 백엔드 개발 비즈니스 요구사항 정리 회원 도메인과 리포지토리 만들기 회원 리포지토리 테스트 케이스 작성 회원 서비스 개발 회원 서비스 테스트 1. 정적 컨텐츠 정의 ✓ 정적 컨텐츠: 서버에서 다른 특별한 동작 없이 html 파일 그대로 웹 브라우저(고객)로 전달하는 방식 → 서버에서 웹 브라우저에게 hello-static.html , index.html 파일 자체를 단순하게 전달함. URL) localhost:8080/"파일명".html 로 직접 접속 가능하다. (100% 동일한 파일 그대로 반환) 대신 별도의 추가적인 프로그래밍 불가능 (정적 컨텐츠니까...) 원리 웹 브라우저 →..
View 환경설정 Welcome page 생성 생성 경로 src > main > resources > static > index.html 생성 👉 index.html == welcome page Spring Boot Feature (manual) : 필요에 따라 검색할 줄 알아야 함 Spring Boot Features Spring Boot Features Graceful shutdown is supported with all four embedded web servers (Jetty, Reactor Netty, Tomcat, and Undertow) and with both reactive and Servlet-based web applications. It occurs as part of closin..
라이브러리 유저가 라이브러리를 호출하는 방식 (필요시에) ==> "땡겨온다" 유저가 실행 흐름 제어 가능 Gradle은 의존 관계가 있는 라이브러리를 처음부터 함께 다운, 통합 관리 해줌 한 라이브러리를 땡겨올 때 연관된 라이브러리 (실행에 필요한 라이브러리들을 자동으로 땡겨옴) '땡겨온' 라이브러리들은 External Libraries 에서 확인 가능하다. 의존 관계에 있는 라이브러리들 함께 관리해주기 때문에 사용하고자 하는 라이브러리에 필요한 라이브러리들을 자동으로 땡겨온다 (따라서 상당히 많은 라이브러리 존재) 좌측하단에 아이콘 클릭 -> gradle 확인 가능 (창 확장/축소) 스프링 부트 라이브러리 spring-boot-starter-web ...-tomcat : 톰켓 라이브러리 (웹서버 ~ 8..
섹션 1. 프로젝트 환경설정 스프링 프로젝트 생성 (https://start.spring.io) 스프링부트 기반으로 프로젝트 생성해주는 사이트 Maven, Gradle - 필요한 라이브러리 가져오고, 빌드한 라이브러리 사이클 관리해주는 툴 요즘 추세는 Maven > 테스트 코드가 중요하다! gitignore : git에 올라가는 소스 관리 bulid.gradle : gradle 설정 파일 sourceCompatibility : 사용 자바 버전 (최신버전) dependency : 사용 라이브러리 testImplementation : 자동으로 들어가는 테스트 라이브러리 repositories mavenCentral() : 이 사이트에서 사용할 라이브러리 다운받게 설정 (필요시 특정 URL로 설정 가능) Ja..