Spring
웹을 개발할때는 크게 정적 콘텐츠, MVC와 템플릿 엔진, API 이렇게 3가지 방법이 있다.
정적 컨텐츠
MVC와 템플릿 엔진 방식
- 예를들어 과거 JSP, PHP(템플릿 엔진)처럼 HTML을 그대로 내려주지 않고, 서버에서 프로그래밍하여 동적으로 내려주는데 모델, 뷰, 컨트롤러로 모듈화하여 처리하는 방식
API 방식
- 예를들어, Vue js, React, 모바일 등의 클라이언트와 함께 개발해야 할때, 요즘에는 JSON 포맷으로 클라이언트에게 데이터를 전달해주는 방식입니다. 또, 서버끼리 통신할 때도 html이 필요 없으므로 이 방식을 사용합니다.
정리
-
required() defalt = false -> 값을 안 넘겨도 됨.
-
주소 뒤에 ?name=spring : get방식으로 받아오는 것
-
@ResponseBody : http의 body에 이 데이터를 내가 직접 넣어주겠다.
-
getter/setter ?
getter/setter 을 두는 것은 Java bean 표준 규약입니다. private 접근지정자가 설정된 멤버변수 name에 접근하기 위해 getter/setter을 사용합니다. 그래서 getter/setter의 접근지정자는 public 으로 설정해야 합니다. 또 위와 같은 방식은 property 접근 방식이라고 합니다.
정적 컨텐츠, mvc템플릿 엔진, api 참고
참고
백엔드 개발 순서
1. 비지니스 요구사항 정리
-
회원 도메인과 리포지토리 만들기
-
회원 리포지토리 테스트 케이스 작성
-
회원 서비스 개발
-
회원 서비스 테스트 ( JUnit 사용 )
일반적인 웹 애플리케이션 계층 구조
컨트롤러
서비스
리포지토리
- 데이터베이스에 접근, 도메인 객체를 DB에 저장하고 관리
도메인
- 비즈니스 도메인 객체, 예) 회원, 주문, 쿠폰 등등 주로 데이터베이스에 저장하고 관리됨
테스트는 의존관계없이 설계가 되어야 함.
optional
- 우선 NPE(NullPointerException)를 알아야합니다. 개발할 때 가장 많이 발생하는 예외중 하나인데 이걸 피하려면 null여부를 확인해야하는데, 이걸 쉽게 회피할 수 있는 방법이 Optional 클래스입니다.
Optional 클래스는Integer나 Double클래스처럼 null 일수 있는 T타입의 객체를 포장해주는 래퍼 클래스에요. 그래서 이 인스턴스는 모든 타입의 참조 변수를 저장할 수 있습니다.
참고
참고
인텔리제이 단축키
- 커맨드+p : 파라미터 정보
- 커맨트+쉬프트+엔터 : 코드 마무리해줌
- 커맨드+n : 제너레이트
- 커맨드+옵션+b : 네비게이트
- 쉬프트 + f6 : 일괄 리네임 (맥은 fn도 같이 눌러줘야함)
- 커맨드 + 옵션 + v : extract 에서 introduce variable
- 커맨드 + p : 파라미터 정보
- 커맨드 + d : 복사붙여넣기 동시에