코딩두의 포트폴리오

스프링 개념잡기 본문

Spring

스프링 개념잡기

코딩두 2024. 6. 18. 01:32

 

1. 스프링은 FrameWork이다

'틀' 안에서 동작을 한다

 

 

2. 스프링은 오픈소스이다

공개된 소스를 사용하여 내부를 볼 수 있다 -> 내부를 뜯어고칠 수 있다

 

 

3. 스프링은 IoC 컨테이너를 가진다 

Inversion of Controll -> 제어의 역전 -> 주도권이 스프링에게 있다!

ex)

Class - 설계도

class에는 abstract class가 있다(추상 클래스)

캐릭터는 추상적인 것이라 실체화가 불가능

Object - 실체화가 가능한 것

Instance - 실체화 된 

-> 주도권이 스프링에 있다는 것은 내가 오브젝트를 직접 공유를 해서 heap이라는 메모리 공간에 올리게 되면 내가 직접 new를 하는 것

 

 

4. 스프링은 DI를 지원한다.

Dependency Injection(의존성 주입)

예전에는 개발자가 원하는 곳에 new를 하여 관리

-> 이제는 스프링이 스캔을 해서 오브젝트를 메모리에 띄웠기 때문에 이것을 'IOC'라 하고

내가 원하는 모든 클래스의 메소드에서 객체를 가져와 사용이 가능한 것을 'DI'라고 함

 

IOC, DI를 사용하면 프로그래밍 짜는 데 장점이 있음

 

 

5. 스프링은 엄청나게 많은 필터를 가지고 있다

요청에 대한 인증, 권한 체크 등을 하는 데 쓰임 / 필터를 문지기라 생각하면 편함

인터셉트 또한 필터와 비슷한 기능을 한다

 

 

6. 스프링은 엄청나게 많은 어노테이션을 가지고 있다 (리플렉션, 컴파일체킹)

Annotation(@) = 주석 + 힌트

Reflection = 분석하는 기법 -> 런타임  분석

어노테이션 또한 주석임 

주석은 컴파일러가 무시

어노테이션의 주석은 컴파일러가 무언가를 체킹하도록 힌트를 주는 것

스프링에서 어노테이션을 통해 객체를 생성함

어노테이션 사용 시 코드의 가독성이 높아지고 재사용이 가능

어노테이션 사용 순서 

1. 어노테이션 정의

2. 클래스에 어노테이션 배치

3. 코드 실행 중 Reflection을 이용 -> 추가 정보 획득하여 기능 실시

 

 

7. 스프링은 MessageConverter를 가지고 있다. 기본값은 현재 Json이다.

중간데이터를 생성해야 함

ex) 자바 Object -> JSON -> 파이선 Object

이 자체의 역할을 하는 것을 MessageConverter라 함.

 

 

8. 스프링은 BufferedReader와 BufferedWriter를 쉽게 사용할 수 있다.

데이터는 전기선에 의해 bit 단위로 전류가 흐름 / 1byte = 1bit

Byte Stream - Input Stream / Outpu Stream

@ResponseBody -> Buffered Writer

@RequestBody -> Buffered Reader

 

'Spring' 카테고리의 다른 글

Springboot 동작원리  (1) 2024.07.02