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