[Spring] ✔ 스프링 프레임워크란 ?

lzhxxn·2021년 1월 16일
1
post-thumbnail

✔ Framework가 필요할까?


a,b,c, ...z가 함께 일하는데 모두가 다른 방식으로 일한다면 어떨까? 뭐 그럭저럭 흘러는 가겠지만... 지금은 상상할 수 없는 어떤 무시무시한 일들이 벌어질지도 모르겠다. a와 w가 밤새 개발한 다음, 이제 우리 코드를 합쳐 보자! 했을 때, a의 방식과 w의 방식이 전혀 달라서 대략난감한 경우 말이다. 흠. 이렇게 하자고 했잖아! 난 이게 더 좋단 말이야!

이런이런.

프레임워크는 독재차처럼 흐름을 제어한다. 개발자는 프레임워크가 제어하는 흐름을 따라 개발할 수밖에 없다. 위에서 예로든 a부터 z로 이루어진 알파벳 팀 모두가 Spring을 쓴다고 해보자. 그럼 a와 w는 자신만의 방식 대로 개발할 수 없다. 오로지 Spring이 제어하는 흐름 위에서 자신의 코드를 추가할 것이다. 그렇다면 위와 같은 일은 일어나지 않을 것이다.

그러니까 이제부터는 직접 구조를 짤 필요가 없이, 스프링이 만들어놓은 구조 위에 살을 붙이고 색을 칠하기만 하면 된다.

즉, 쉽게 요약을 하면 프레임워크, 뼈대나 근간을 이루는 코드들의 묶음. 프레임워크를 이용한다는 의미는 프로그램의 기본 흐름이나 구조를 정하고, 모든 팀원이 이 구조에 자신의 코드를 추가하는 방식으로 개발하게 된다.

장점 : 개발에 필요한 구조를 이미 코드로 만들어 놓았기 때문에, 실력이 부족한 개발자라도 반쯤 완성된 상태에서 필요한 부분을 조립하는 형태의 개발이 가능하다.

✔ 스프링의 주요 특징


■ POJO 기반의 구성 : Plain Old Java Object, 객체 간의 관계를 구성할 수 있는데 이때 다른 프레임워크들과 달리 API등을 사용하지 않고 POJO의 구성만으로 가능하도록 제작되어 있다. 이는 일반적인 형태로 코드를 작성하고 실행할 수 있어 생산성에도 유리하고, 코드 테스트 작업도 유연하게 할 수 있다.

■ 의존성 주입(DI)과 스프링 : ApplicationContext가 필요한 객체들을 생성하고, 필요한 객체들을 주입하는 역할을 해주는 구조. 기존의 프로그래밍과 달리 객체와 객체를 분리해서 생성하고 이러한 객체들을 엮는 작업을 하는 형태의 개발이 된다. 스프링에서는 ApplicationContext가 관리하는 객체들을 Bean이라는 용어라 부르고 빈과 빈 사이의 의존관계를 처리하는 방식으로 XML 설정, 어노테이션 설정, Java 설정 방식을 이용할 수 있다.
스프링에서는 생성자를 이용한 주입과 setter 메서드를 이용한 주입으로 의존성 주입을 구현한다. 설정 방식은 주로 XML이나 어노테이션을 이용해서 처리한다.

■ AOP의 지원 : 반드시 처리가 필요한 부분을 스프링에서는 '횡단 관심사(cross-concern)'라 부른다. Aspect Oriented Programming은 이러한 횡단 관심사를 모듈로 분리하는 프로그래밍의 패러다임이다. 스프링은 AOP의 AspectJ의 문법을 통해 작성할 수 있는데, 이를통해 개발자는 핵심 비즈니스로직에만 집중할 수 있고, 각 프로젝트마다 다른 관심사를 적용할 때 코드 수정 최소화가 가능하며, 원하는 관심사의 유지보수가 수월한 코드를 구성할 수 있다.

4. 트랜잭션의 지원 : 데이터베이스를 이용할 때 반드시 신경써야되는 부분은 하나의 업무가 여러 작업으로 이루어 지눈 경우의 트랜잭션 처리이다. 이 트랜잭션 관리를 어노테이션이나 XML로 설정할 수 있기 때문에 개발자가 매번 상황에 맞는 코드를 작성할 필요가 없다.

_🍯TIP = POJO란 순수한 자바객체를 일컫는다. _
왜 POJO를 지향해야 할까 ?
스프링 프레임워크 이전에는 원하는 엔터프라이즈 기술이 있다면 그 기술을 직접적으로 사용하는 객체를 설계했습니다. 그리고 이러한 개발 방식이 만연하고 있었습니다. 특정 기술과 환경에 종속되어 의존하게 된 자바 코드는 가독성이 떨어져 유지보수에 어려움이 생겼습니다. 또한, 특정 기술의 클래스를 상속받거나, 직접 의존하게 되어 확장성이 매우 떨어지는 단점이 있었습니다. 이 말은 객체지향의 화신인 자바가 객체지향 설계의 장점들을 잃어버리게 된 것입니다.
그래서 POJO라는 개념이 등장했습니다. 본래 자바의 장점을 살리는 '오래된' 방식의 '순수한' 자바객체 말입니다.

✔ 스프링의 작동 순서


■ 스프링 프레임워크가 시작되면서 먼저 스프링이 사용하는 메모리 영역(Context: ApplicationContext)을 만든다.

■ 스프링은 자신이 객체를 생성하고 관리해야 하는 객체들에 대한 설정이 필요하다. (root-context.xml)

■ root-context.xml에 설정되어 있는 context:component-scan 태그의 내용을 통해서 'org.zerock.sample' 패키지를 스캔하기 시작한다.

■ 해당 패키지에 있는 클래스들 중에서 스프링이 사용하는 @Component라는 어노테이션이 존재하는 클래스의 인스턴스를 생성한다.

한개 한개 더 알게 될 때 마다 추가하기 . 🔎 https://velog.io/@bbirds94/

이 글은 🔎 https://velog.io/@bbirds94/ 를 참고했습니다.
이 글은 🔎 https://siyoon210.tistory.com/ 를 참고했습니다.

profile
Junior ᴅᴇ́ᴠᴇʟᴏᴘᴘᴇᴜʀ

0개의 댓글