본문 바로가기
Spring 프레임워크/이론

[ 스프링 프레임워크 ] 핵심 기술 / 디자인 철학

by Hwanii_ 2023. 10. 18.
728x90

스프링 프레임워크 핵심 기술

 

앞으로 스프링을 업무에서 사용 하게 되면,

결국 이미 구성 되어 있는 것들을 따라 하면서 비슷하게 기능을 찍어 내는 그림으로 흘러 가게 될 것이다.

그런데 단순히 따라 하는 것은 어렵지 않지만, 동작 하는 원리를 알지 못한다면 어떻게 될까 ?

문제가 발생 했을 때, 원인 파악도 어려울 뿐더러 해결 하는 것은 더욱 어려울 것이다.

그리고,

약간 다른 요구 사항에 맞쳐서 기능을 개발 하게 되면 기존에 있는 것들을 그대로 따라 할 수는 없게 될 것인데,

이때 스프링 프레임워크의 내부적인 동작 원리를 알지 못하면 응용이 어려워지게 될 것 이다.

따라서 스프링 프레임워크의 내부 동작 원리에 대해 파악 하는게 중요 하다고 할 수 있다.

 

Spring Framework 를 이루는 다양한 기술

 

 

[ DB 관련 기능 ]

[ Web 관련 기능 ]

[ AOP 관련 기능 ]

[ Messaging 관련 기능 ]

[ Core Container (핵심 중에 핵심) ]
Context : 설정과 유사하지만, 설정 보다 더 포괄적 이다. 전체적인 프레임워크가 동작 하기 위한 설정 + a 이다.

[ Test 관련 기능 ]

 

 

 

Core : DI, IoC
스프링의 근간, 내가 만든 클래스를 스프링이 직접 관리하여 어플리케이션을 동작 하게 한다.

AOP (Aspect Oriented Programming)
공통적인 코드를 프레임워크 레벨에서 지원해주는 방법.

Validation, Data binding
검증 그리고 외부에서 받은 데이터를 담아내는 방법.

Resource
스프링 내부에서 설정이 들어 있는 파일들에 접근하는 동작 원리.
(또는 외부 URL / URI, 스프링의 외부 자원에 접근하는데 사용하는 API)

SpEL (Spring Expression Language)
짧은 표현식을 통해 필요한 데이터나 설정 값을 얻어 올 수 있게 하는 특별한 형태의 표현식에 가까운 간편한 언어.
(설정 값들을 외부 에서 주입 받을 때 주로 사용 한다)

Null-Safety
Null을 조금 더 잘 다루고 싶다면 사용 하면 된다.

보통 코드를 작성 할 때 앞 부분에 if(null 이 아니야 ?) 이런식으로 조건식을 줘서 null 처리를 하지만,
스프링이 지원하는 null 처리 방식으로 조금 더 안전하게 null을 관리 할 수 있다.

 

 

 

스프링의 디자인 철학

 

1)
스프링은 오랜 시간 동안 숙성된 프레임워크 이기 때문에, 다양한 모듈 (기능) 을 계속 발전 시키면서 성장 하고 있다.
심지어 외부 모듈 (기능)을 가져와서 마치 스프링의 자체 모듈 인 것 처럼 활용 할 수도 있다.

이렇듯, 스프링은 같은 (유사한) 기능이라도 다양한 모듈을 제공 할 수 밖에 없는 환경 이라고 볼 수 있다.

이렇게 유연하게 지속적으로 추가 개발이 되고 있는 자유도가 높은 프레임워크 라고 할 수 있겠다.

하지만, 왜 이렇게 유사한 기능을 하는 다양한 모듈이 있는건지 의문이 들 수 밖에 없고,
이는 자유도가 높은 장점도 있지만, 반대로 불편함을 느낄 수 있는 단점도 존재 하게 된다.

2)
뿐만아니라, 스프링은 이전 버전과의 강력한 호환성을 제공 한다.
너무 많은 레거시 때문에 코드의 복잡성이 높아질 수 있는 가능성이 생기게 된다.

옛날 버전의 모듈 (기능) 까지 모두 지니고 있기 때문에, Old 버전과 New 버전을 혼용해서 사용 할 수 있다.

3)
나온지 오래된만큼 거대한 프레임워크가 되었기 때문에 API 디자인을 섬세하게 노력 한다.
즉, 스프링 코드 자체가 하나의 좋은 참고 소스가 될 수 밖에 없다.

높은 코드 품질을 유지 하려고 하기 때문에,
스프링 프로젝트 GitHub 는 아주 좋은 참고 소스이자 이슈 관리도 좋은 프로세스 참고용 이라 할 수 있다.

 

 

 

[ 정리 ]


스프링 프레임워크는 높은 자유도를 부여 하고 계속 발전 하는 고품질의 다양성이 있는 프로젝트 이다.
그렇지만, 너무 자유롭기 때문에 어떤 것을 사용 해야 할지 선택 하기 어려운 단점이 존재 한다.

 

 

 

References

 

Overview of Spring Framework

 

Overview of Spring Framework

The Spring Framework is a Java platform that provides comprehensive infrastructure support for developing Java applications. Spring handles the infrastructure so you can focus on your application. Spring enables you to build applications from "plain old Ja

docs.spring.io

 

Spring Framework Overview :: Spring Framework

 

Spring Framework Overview :: Spring Framework

The term "Spring" means different things in different contexts. It can be used to refer to the Spring Framework project itself, which is where it all started. Over time, other Spring projects have been built on top of the Spring Framework. Most often, when

docs.spring.io

 

Spring Framework Documentation :: Spring Framework

 

Spring Framework Documentation :: Spring Framework

Rod Johnson, Juergen Hoeller, Keith Donald, Colin Sampaleanu, Rob Harrop, Thomas Risberg, Alef Arendsen, Darren Davison, Dmitriy Kopylenko, Mark Pollack, Thierry Templier, Erwin Vervaet, Portia Tung, Ben Hale, Adrian Colyer, John Lewis, Costin Leau, Mark F

docs.spring.io

반응형