제로베이스 백엔드 스쿨

[제로베이스 백엔드 스쿨 주 3일반]15 주차 후기(2024.7.8~2024.7.14)

HA.VA 2024. 7. 20. 08:43

업데이트: 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)있음

- 조건 지정에는 '포인트컷 식'을 사용