프레임워크의 사전적 의미는 뼈대, 근간이다.
a,b,c, ...z가 함께 일하는데 모두가 다른 방식으로 일한다면 어떨까? 뭐 그럭저럭 흘러는 가겠지만... 지금은 상상할 수 없는 어떤 무시무시한 일들이 벌어질지도 모르겠다. a와 w가 밤새 개발한 다음, 이제 우리 코드를 합쳐 보자! 했을 때, a의 방식과 w의 방식이 전혀 달라서 대략난감한 경우 말이다. 흠. 이렇게 하자고 했잖아! 난 이게 더 좋단 말이야!
이런이런.
프레임워크는 독재차처럼 흐름을 제어한다. 개발자는 프레임워크가 제어하는 흐름을 따라 개발할 수밖에 없다. 위에서 예로든 a부터 z로 이루어진 알파벳 팀 모두가 Spring을 쓴다고 해보자. 그럼 a와 w는 자신만의 방식 대로 개발할 수 없다. 오로지 Spring이 제어하는 흐름 위에서 자신의 코드를 추가할 것이다. 그렇다면 위와 같은 일은 일어나지 않겠지.
그러니까 이제부터는 직접 구조를 짤 필요가 없이, 스프링이 만들어놓은 구조 위에 살을 붙이고 색을 칠하기만 하면 된다.
POJO기반 구성
의존성 주입Dependency Injection(DI)
의존성은 하나의 객체가 다른 객체 없이 자신의 역할을 할 수 없다는 것을 말한다.
주입은, 밀어넣는 것이다. 이 두개를 합치면 의존성 주입이다. 어떤 객체가 필요로 하는 객체를 찾아서 밀어넣는 것이다.
왜?
편하기 때문이다. 주입 받는 입장에서는 어떤 객체인지 신경 쓸 필요가 없다. 어떤 객체에 의존하든, 역할은 변하지 않는다.
누가 주입해주는가? Application Context다. Application Context는 일종의 컨테이너다. 늘 대기하면서 빈을 관리한다. 그리고 누군가 빈을 요청하면, 해당 빈을 찾아서 주입한다.
AOP(Aspect-Oriented-Programming)
개발할 때 핵심 비즈니스 로직에만 집중할 수 있게 돕는 기능이다. 시스템이 공통으로 가지고 있는 반복적인 코드가 있다. 핵심 로직은 아니지만, 반드시 처리해야만 하는 귀찮은 것들. 이것을 스프링에서는 횡단 관심사(cross-concern)라고 한다. AOP는 횡단 관심사를 모듈로 분리하는 프로그래밍 패러다임이다.
장점
MVC구조
WAS에 종속적이지 않음
트랜잭션
이 시리즈는 🔎 코드로 배우는 스프링 웹 프로젝트를 참고했습니다.
잘 보고 갑니다 !