어노테이션은 클래스,메서드,변수 등에 데이터를 제공하는 방법입니다.
ex_ @GetMapping 클라이언트의 get요청을 특정 컨트롤러 메서드와 매핑하는 추가정보를 제공
프로젝트를 빌드하고 의존성을 관리하는데 사용되는 빌드 도구입니다.
Gradle 같은경우에는 Groovy, Kotlin DSL을 사용하는 빌드도구로, 유연하고 빠른 성능이 제공이됩니다.
Maven 은 XML 기반의 설정 파일인 POM을 사용하는 빌드 도구입니다. , maven같은경우에는 레거시한 방법으로 기존 자바 프로젝트와 호환성이 필요할 경우에 사용됩니다.
*Maven 레파지토리라 : 라이브러리 파일(JAR)과 그 라이브러리에 대한 정보(POM 파일)를 저장한 파일 저장소 입니다.
getter와 setter는 객체지향 프로그래밍에서 사용되는 메서드입니다.
클래스 속성에 접근하고 수정하기위해 사용됩니다.
getter: 클래스의 필드 값을 외부에서 읽을 수 있도록
setter: 클래스의 필드 값을 외부에서 변경할 수 있도록
프로그램이 실행되는 시작 지점입니다.
스프링 부트 생성시
/java/.../xxApplication 클래스의 main 함수가 엔트리 포인트가 됩니다.
SSR과 CSR은 웹 애플리케이션이 HTML을 생성하고 사용자에게 표시 렌더링 방식 입니다.
웹 앱을 개발할떄 사용되는 주요 어노테이션입니다.
HTTP 요청을 처리하고 적절한 응답을 생성
스프링 모델뷰컨트롤러 에서 웹 요청을 처리하는 클래스임을 선언하는 어노테이션입니다. , 컨트롤러는 사용자 요청을 처리하고 적절한 응답을 반환합니다. , 컨트롤러를 사용하는이유는 프레임워크에서 각 작업들마다 모듈화를 함으로써 가독성 유지보수성을 향상시키기 위해서입니다. , 개발 편의성과 유지보수를 위해 컨트롤러를 기능별로 나누었지만 앱을 실행할떄는 모든 컨트롤러를 스캔하여 url 매핑정보를 통합하고 요청을 처리할 준비를 합니다.
특정 get 요청을 처리하기 위해 사용되는 어노테이션으로 클라리언트가 서버에 get 방식으로 요청을 보냈을때 해당 요청을 처리하는 메서드로 매핑해줍니다.
두 어노테이션은 자주 함께 사용됩니다. 컨트롤러 클래스에서 controller를 선언하고 나서 클라이언트에서 url 요청시 getmapping을 사용하여 요청을 매핑해줍니다. , 둘다 spring Framework(spring MVC)의 일부로 제공되는 어노테이션 입니다.
*get 요청 : get요청은 데이터를 서버에서 가져오기 위한 요청으로, 서버의 상태나 데이터를 변경하지 않습니다. 서버의 리소스를 읽기 위한 요청입니다. 페이지나 데이터를 가져올때 사용됩니다.
java 애플리케이션을 배포할 때 사용하는 압축된 파일 형식 입니다.
이패키징은 java 애플리케이션을 실행 가능한 형태로 묶은 것입니다.
환경변수 파일은 애플리케이션 실행시 필요한 설정 값을 저장하는 파일로, 에플리케이션의 동작을 설정하거나 환경별로 설정을 변경할 수 있도록 도와줍니다.
ex_ 스프링부트의 application.properties , application.yaml
사용자마다 컴퓨터환경이다르다보니 app을 실행시킬때마다 필요한 설정을 바꾸기위한 파일입니다. , 코드는 변경되지않고 설정만 변경하여 동작을 조정할 수 있습니다.
라이브러리를 직접만드는것보다 이미 만들어져있는 프레임워크를 사용하면
개발을 일관성 있고 쉽고 빠르게 진행할 수 있기 때문입니다.
프레임워크마다 디렉토리구조와 패키징하는 방식이 다릅니다.
java에서 데이터베이스와 상호작용하기 위한 OMR방식의 표준입니다.
한마디로 객체지향 프로그래밍 + 관계형 데이터베이스 입니다.
*OMR : 객체 지향 언어의 객체와 관계형 데이터베이스의 테이블을 매핑하여 데이터베이스 작업을 객체 중심으로 처리할 수 있게 해주는 기술입니다.
템플릿 엔진으로서 주로 SSR을 담당합니다. 서버에서 HTML을 동적으로 생성하여 클라이언트로 전달하는데 사용됩니다.
getter, setter 등의 자바에서 필요한 메서드들을 자동으로 생성해주는 라이브러리 입니다. , 어노테이션 기반으로 작동합니다.
요청 수신 : 클라이언트가 HTTP 요청을 보냅니다.
URL 분석 : HTTP메서드를 분석합니다.
적절한 컨트롤러 메서드 매핑 : 어떤 컨트롤러의 어떤 메서드가 요청을 처리할지 결정합니다. , 파라미터 전달
요청 처리 : 비지니스 로직이 실행됩니다.
응답 반환 : 메서드 처리결과를 클라이언트로 반환합니다.
Controller는 서버에서 HTML 페이지를 렌더링하여 클라이언트로 전달하는것이 주목적입니다.
반면 RestController는 RESTful API 를개발 (json, xml데이터) 하는데 목적이 있습니다.
요약하자면 컨트롤러는 페이지의 'view를 반환'
레스트컨트롤러는 json,xml과같은 '데이터를 반환'합니다.
prefix는 공통된 url 경로를 앞에 추가하여 컨트롤러 또는 특정 메서드에 매핑된 모든 경로의 base path를 설정하는 것을 의미합니다.
공통된 Prefix를 가지면 url구조가 명확해지고 일관성을 유지할 수 있습니다.
주로 서로다른 개발자가 통합된 환경에서 시스템을 개발하기위해서 사용됩니다.
ex_ /auth/login /auth/logout auth/register
html 태그를 사용한 전송
1. form 태그 - 주로 서버로 데이터를 전송하는 데 사용됩니다.
2. a 태그 - 하이퍼링크를 통해 서버로 이동하며 주로 get 요청에 사용됩니다.
javascript를 사용한 전송
1. ajax - 페이지를 새로고침하지 않고 비동기적으로 서버와 통신하는 기술입니다.
2. axios - promise 기반의 http 클라이언트 라이브러리로, 서버와 데이터를 쉽게 주고받을 수 있습니다.
서버에 추가 데이터를 전달하기 위한 키-값 쌍 형태의 문자열입니다.
ex_ http://localhost:8080/news?id=24231241&servicetype=video
키 id
값 24231241
키 servicetype
값 video
api설계에서 리소스를 특정하거나 계층적 데이터를 표현하기위해 사용됩니다.
api설계에서 리소스를 특정
GET /users/123
사용자id 123을 이용하여 특정 사용자를 조회
계층적 데이터를 표현
게시판과 댓글의 관계 (부모-자식 관계)