스프링 프레임 워크 1주차 이어서 2주차 관련 공부 내용을 정리합니다.
목차
1. 인터페이스 & 리스트 이해하기
1)인터페이스는 다른 클래스에서 구현하는 것을 전제로 하고 있습니다. 그래서 추상 클래스라고도 불립니다. 그리고 인터페이스 변수 선언 시 암묵적으로 public static final 상수가 됩니다.
2) 인터페이스 구현 시 implements 키워드를 사용해요. 그리고 인터페이스 정의되는 추상 메서드를 모두 구현해야 됩니다. 하지 않을 경우 컴파일 에러 발생해요. 구현할 때 public 선언해 둘 필요 있습니다.
@ Override는 슈퍼 클래스, 인터페이스 메서드를 상속 or 구현하는 클래스에서 재정의하는 것을 말합니다. 그렇기 때문에 만약 재정의되어 있지 않을 경우 에러가 발생하는 것을 알려줍니다.
3) List는 배열로 이해를 하면 됩니다. 배열은 길이가 정해져 있기 때문에 요소를 추가, 삭제에 어려운점이 있습니다.
4) 컬렉션(Collection)?
-> 종류 : 리스트 (순서대로 데이터를 저장 하지만 데이터 중복을 허용) / 세트(순서를 유지하지 않는 집합으로 중복을 허용하지 않습니다.) / 마지막 맵(키와 값의 쌍으로 이루어진 데이터 집합으로 순서는 유지하지 않고 키의 중복을 허용하지 않짐나 값은 중복을 허용 합니다.)
5) 리스트 내용
-> ArrayList, LinkedList가 있으며, ArrayList는 가장 많이 사용하며, 요소를 배열로 유지하기 때문에 요소의 검색을 고속으로 처리 가능하지만, 요소의 수가 많아질 경우 추가, 삭제 처리하는 시간이 오래걸립니다.
-> LinkedList는 리스트 구조 이용해 관리하기 때문에 추가, 삭제는 ArrayList보다 빠르지만 특정 요소 검색과 같은 인덱스 값에 의한 무작이 액세스 사용에는 적합하지 않아요.
복습하며, 알게 된 개념 : 제네릭(Generic)은 List에 넣을 형태를 제한 하는 것으로 Link<Integer, String> 정수, 문자열로 제한을 하는 형태 입니다.
2. 웹 어플리케이션 공부 전 용어 공부
- 클라이언트, 서버 란?
클라이언트는 서버에 요청을 하고 서버에서는 클라이언트에게 받은 요청 자료를 클라이언트에게 보여주는 즉, 응답하는 것으로 생각하면 됩니다.
2. 브라우저 : 인터넷 사용할 때 이용하는 소프트웨어로 예를 들어 구글에 크롬, 마이크로소프트 엣지 등 있습니다.
3. 애플리케이션 : 응용 프로그램 소프트웨어 약어로 프로그래밍 언어로 작성한 소프트웨어
4. 웹서버 : 웹 애플리케이션 배포하느 서버로 웹 서버는 항상 켜져 있으며, 클라이언트의 요청을 기다리고 있습니다. 요청이 오면 응답을 하기 때문입니다.
5. HTTP통신(프로토콜) : 클라이언트, 서버는 request(요청) 과 response 응답으로 주고 받습니다. 이런 걸 HTTP통신이라고 해요. 위에서 얘기 했던 것처럼 클라이언트 요청에 웹 서버가 응답을 합니다.
6. 통신의 흐름은 우선 클라이언트가 브라우저에 입력을 하면 그러면 웹 서버로 요청이 됩니다. 요청 받은 웹서버는 요청에 해당하는 사항을 다시 클라이언트에게 응답 값을 반환 합니다. 브라우저에서는 받은 응답 값을 표시하고 클라이언트가 확인을 합니다.
7. GET, POST 이해
우선 GET, POST 모두 HTTP 요청의 한 유형으로 GET은 브라우저에 웹 서버로 값을 전달할 때 url 뒤에 값을 더해 보내는 방식이며, 이때 url뒤에 오는 정보를 쿼리 스트링 or 쿼리 문자열이라고 해요. 하지만 쿼리 스트링은 많은 양의 값을 보내기에 적합하지 않아요.
Ex) url 끝에 ?가 붙어 퀘리 스트링 시작을 나타내며, 형식은 이름 = 값으로 나타냅니다. 여러 값을 전달 하려면 and인 & 이어서 사용합니다.
POST는 URL보이지 않는 장소에 값을 넣어서 보내는 방법으로 개인정보를 등록할 때 입력한 내용을 URL에 표시하고 싶지 않을 때 post 사용하며, GET과 반대로 많은 양의 값을 보낼 때 적합해서 개념을 알고 요청을 보낼 때 적합한 걸 사용해야 될 것 같습니다.
3. Lombok과 Gradle은 뭘까?
편리한 프로그램을 모아 모듈화한 것을 라이브러리라고 하며, 그 중 Lombok도 있습니다.
초반 강의를 들을 때 getter, setter 하나하나 만들어야 했는데 Lombok을 사용한 후 편리해 졌습니다. 왜냐하면 코드를 작성하지 않아도 자동으로 getter, setter 구현을 해주기 때문입니다.
Gradle은 빌드 도구이며, 빌드는 요구된 실행 환경에서 동작을 할 수 있는 형식에 애플리케이션 or 라이브러리를 조립하는 것을 말해요.