[작성일: 2023. 04. 15]
Framework
- 뼈대나 근간을 이루는 코드들의 묶음
- 개발자들은 개인별 능력자가 크고, 개발자 구성에 따라 프로젝트 성패가 좌우됨.
- 이런 상황을 극복하기 위한 코드의 결과물이 프레임워크라고 할 수 있음.
- 프로그램의 기본적인 흐름이나 구조는 정해져 있고, 여기에 자신의 코드를 추가하는 방식으로 개발함.
Framework의 장점
- 개발에 필요한 구조를 이미 코드로 구현해 놓았기 때문에 실력이 부족한 개발자라고 하더라도 일정 부분 완성한 상태에서 필요한 부분을 조립하는 형태의 개발이 가능함.
- 기업 입장에서는 일정한 품질이 얻어지는 결과물을 기대 가능함.
- 개발자 입장에서는 완성된 구조에 자신의 코드를 개발해서 넣기 때문에 개발 시간을 단축시킬 수 있음.
Spring Framework
- 경량(light-weight) 프레임워크
- 특정 기능 위주로 jar 파일(자바에 압축된 파일) 등을 이용해 모든 개발이 가능하도록 구성
- 예전 프레임워크는 다양한 경우를 처리할 수 있는 다양한 기능을 가지도록 하나의 기능을 위해 많은 구조가 필요했음.
- 또한 기술이 너무 복잡하고 방대해서 전체를 이해하고 개발하기에 어려움이 많아 스프링 프레임워크가 등장함.
Spring Framework 장점
- 복잡함이 싫어서 만들어진 프레임워크
- 프로젝트 전체 구조를 설계할 때 유용한 프레임워크
- 다른 프레임워크와 혼용해서 사용 가능(포용, 연계)
- 개발 생산성과 개발 도구 지원
Spring Framework 특징
- POJO 기반의 구성
- 의존성 주입(DI)을 통한 객체 간에 관계 구성
- AOP(Aspect-Oriented Programming)
- 편리한 MVC 구조
- WAS의 종속적이지 않은 개발 환경
POJO
- Plain Old Java Object 기반의 구성
- 오래된 방식의 간단한 자바 객체라는 의미
- Java 코드에서 일반적으로 객체를 구성하는 방식을 Spring 프레임워크에서 그대로 사용할 수 있음.
의존성 주입(DI)
- 의존성 주입을 통한 객체 간에 관계 구성
- 의존성(Dependency)이란 하나의 객체가 다른 객체 없이 역할을 하지 못 하는 것
- A 객체가 B 객체 없이 동작이 불가능할 때 'A가 B에 의존적이다.' 라고 할 수 있음.
- 주입(Injection)은 말 그대로 외부에서 밀어넣는 것
- 주입을 받는 객체는 어떤 객체인지 신경 쓸 필요가 없고 자신의 역할은 변하지 않게 됨.
- A는 B가 필요하다는 신호만 보내고 B 객체를 주입하는 것은 외부에서 이루어짐.
- 의존성 주입을 위해 ApplicationContext가 필요하며 필요한 객체들은 생성하고, 필요한 객체들을 주입해주는 역할을 함.
- 개발자들은 기존의 프로그래밍과 달리 객체와 객체를 분리해서 생성하며 이 객체들을 엮는(wiring) 작업의 형태로 개발함.
AOP
- Aspect-Oriented Programming : 관점 지향 프로그래밍
- 좋은 개발 환경에서는 개발자가 비즈니스 로직에만 집중할 수 있게 함.
- Spring 프레임워크는 반복적인 코드를 제거해줌으로써 핵심 비즈니스 로직에만 집중할 수 있는 방법을 제공함.
- 보안, 로그, 트랜잭션과 같은 비즈니스 로직은 아니지만 반드시 처리가 필요한 부분이며, 횡단 관심사(cross-consern)라고 함.
- Spring 프레임워크는 횡단 관심사를 분리해서 제작하는 것이 가능함.
- 횡단 관심사를 모듈로 분리하는 프로그래밍(AOP)
- 장점
- 핵심 비즈니스 로직만 집중하여 코드 개발
- 각 프로젝트마다 다른 관심사 적용 시 코드 수정 최소화
- 원하는 관심사의 유지보수가 수월한 코드 구성 가능
트랜잭션 지원
- DB 작업 시 트랜잭션 관리를 매번 상황에 맞게 코드로 작성하지 않고 Annotation이나 XML로 설정 가능
단위 테스트
- Unit Test
- 전체 Application을 실행하지 않아도 기능별 단위 테스트가 용이하기 때문에 버그를 줄이고 개발 시간을 단축할 수 있음.
ApplicationContext
- ApplicationContext가 관리하는 객체들을 '빈(Bean)'이라고 부르며, 빈과 빈 사이의 의존 관계를 처리하도록 XML, Annotation, Java 설정 등을 이용할 수 있음.
🐣 해당 게시글은 입문 개발자가 요약/정리한 글이므로 틀린 내용이나 오타가 있을 수 있습니다.