업데이트: 2024.08.04
"스프링 프레임워크 기초 복습 시작!"
▣ 한 주 간 느낀 점
프로젝트 수업이 끝나고, 북스터디가 시작되었다.
책 이름은 "스프링 프레임워크 첫걸음(주식회사 후루네스 키노시타 마사아키 저, 위키북스)"
스프링 프레임워크을 시작하는 사람들을 위한 책이다.
이 책을 읽어보니 스프링 프레임워크의 기초적인 내용들이 꼼꼼하고 쉽게 설명되어 있었다.
사실 지난 6주간 스프링 프레임워크 프로젝트를 연습하면서 궁금했던 점이 많았다.
책을 읽어보니 그 동안 궁금했던 용어, 구조 등에 대한 궁금증을 해소할 수 있을 것 같다는 기대가 들었다.
금주부터는 열심히 달리다 잠깐 쉬어가는 오아시스 같다는 생각이 들었다.
이 책을 통해서 스프링 프레임워크 기초가 잘 잡히기를 기대해본다.
▣ 스프링 프레임워크 첫 걸음 요약(1장~3장)
1. 스프링 프레임워크 개요
프레임워크(Framework)
프로그램을 쉽게 만들 수 있도록 도움을 주는 툴(Tool)
장점
프로그램 제작에 필요한 기본기능을 제공하여, 별도의 코딩 없이도 해당 기능을 사용할 수 있음.
단점
별도로 프레임워크 사용법을 익혀야 함.
스프링 프레임워크(Spring)
자바 개발 환경에서 사용가능한 프레임워크. 스프링으로 부르기도 함
2. 스프링 프레임워크 기초지식
인터페이스(Interface)
인터페이스 선언
interface 키워드를 이용하여, 인터페이스를 선언. 암묵적으로 public abstract 접근 제어자가 붙음.
public interface Hello {
/**
* 인사하기
*/
public abstract void hello();
}
예시1. 인터페이스 선언
인터페이스 구현
implements 키워드를 이용하여, 인터페이스를 구현. 인터페이스에서 정의된 메서드가 구현되지 않을 경우, 컴파일에러가 발생함.
public class MorningHello implements Hello {
@Override
public void hello() {
System.out.println("안녕하세요, 좋은 아침입니다!");
}
}
예시2. 인터페이스 구현
리스트(List)
컬렉션 프레임워크에서 제공하는 인터페이스 중 하나
ArrayList
리스트의 구현 클래스 중 하나. 요소 검색은 빠르게 처리가 가능하나, 요소의 수가 많아질경우 추가/삭제 처리에 시간이 소요 됨.
LinkedList
요소의 추가/삭제 처리는 ArrayList보다 빠른 편. 그러나 특정 요소 검색에는 적합하지 않음.
클라이언트(Clinet) / 서버(Server)
클라이언트
서비스를 요청하는 요소
서버
클라이언트가 요청한 서비스를 제공하는 요소
브라우저(Browser)
인터넷을 사용할 때 이용하는 프로그램 중 하나
브라우저의 종류
구글 크롬, 파이어 폭스, 마이크로소프트 엣지 등
애플리케이션(Application) / 웹 애플리케이션(Web Application)
애플리케이션
응용 프로그램 소프트웨어의 약어.
웹 애플리케이션
인터넷을 통해 사용되는 응용 프로그램(검색 엔진, e-커머스 등)
웹 서버
웹 애플리케이션을 배포하는 서버
HTTP 통신(프로토콜, Protocol)
클라이언트와 웹 서버 간 상호작용
HTTP 통신의 흐름

① 클라이언트가 브라우저에 URL을 입력
② 서버로 HTTP 요청이 전송
③ 서버는 요청에 적합한 HTTP 응답을 반환
④ 브라우저는 받은 응답을 표시
GET메서드 / POST메서드
GET메서드
서버에 정보 혹은 데이터를 요청하는 메서드
POST메서드
서버에 정보 혹은 데이터를 전달하는 메서드
LAMBOK / GRADLE
라이브러리
개발에 편리한 프로그램을 모아 모듈화한 것
LAMBOK
라이브러리 중 하나. Getter/Setter 자동생성 등 웹 애플리케이션 개발에 유용한 기능을 제공
빌드
소스코드가 실행가능한 프로그램으로 변환하는 과정
GRADLE
자바 개발 환경에서 사용되는 빌드 도구 중 하나
3. 스프링 프레임워크 핵심기능
3-1. 의존성 주입(Dependency Injection)
의존성
- A프로그램을 작동함에 있어 B프로그램 참조할 때, 'A프로그램은 B프로그램에 의존한다'고 함
- 이 경우, B프로그램이 변경될 경우, A프로그램도 함께 변경이 되어야 함
클래스 의존
- A클래스가 B클래스를 의존한다고 가정
- A클래스에서 B클래스의 타입을 직접적으로 지정할 경우, 총 3가지를 수정해야 함
인터페이스 의존
- A클래스가 I인터페이스를 의존한다고 가정
- A클래스에서 I인터페이스를 의존할 경우, 총 1가지를 수정해야 함
DI컨테이너
- A클래스가 B클래스를 의존한다고 가정
- 의존성 주입: A클래스 밖에서 B클래스 인스턴스를 주입하는 것
- 스프링 프레임워크에서는 '의존성 주입(DI)' 기능을 가지고 있으며, 이를 DI 컨테이너라고 함
- 의존성 주입 기능을 가진 어노테이션에는 @Controller, @Service, @Repository, @Component 등이 있음
3-2. 관점 지향 프로그래밍 (Aspect Oriented Programming)
중심적 관심사(Primary Concern)
사용자가 구현하고 싶은 프로그램. 구현해야 할 기능을 나타내는 비즈니스 로직
횡단적 관심사(Crosscultting-Concerns)
품질/유지보수 측면에서 필요한 프로그램(*예: 예외처리 등)
AOP기능
- 스프링 프레임워크에서 제공하는 기능. '중심적 관심사'와 '횡단적 관심사'를 분리하여 프로그램 제작을 용이하게 하는 기능.
- 인터셉트 메커니즘을 사용함
어드바이스(Advice)
- 횡단적 관심사를 메서드로 구현한 것
- 실행 순서에 따라 5가지 유형(Before, After Returning, After Throwing, After, Around)있음
- 조건 지정에는 '포인트컷 식'을 사용
'제로베이스 백엔드 스쿨' 카테고리의 다른 글
| [제로베이스 백엔드 스쿨 주 3일반]17 주차 후기(2024.7.22~2024.7.28) (9) | 2024.07.28 |
|---|---|
| [제로베이스 백엔드 스쿨 주 3일반]16 주차 후기(2024.7.15~2024.7.21) (5) | 2024.07.20 |
| [제로베이스 백엔드 스쿨 주 3일반]11 주차 후기(2024.6.10~2024.6.16) (5) | 2024.06.24 |
| [제로베이스 백엔드 스쿨 주 3일반]10 주차 후기(2024.6.3~2024.6.9) (7) | 2024.06.10 |
| [제로베이스 백엔드 스쿨 주 3일반]1~9주차 후기(2024.1월~2월) (2) | 2024.05.23 |