디자인패턴 : 소프트웨어 개발에서 자주 나타나는 과제를 해결하기 위한 방법 중 하나로, 노하우를 축적하여 재사용하기 좋은 형태로 특정 규약을 묶어서 정리한 것.
요구사항변경에 대한 소스코드 변경을 최소화, 범용적인 코딩스타일을 적용, 직관적인 코드를 사용하기 위함.
프레임워크 : 비기능적 요구사항을 만족하는 구조와 구현된 기능을 안정적으로 실행하도록 제어해주는 라이브러리의 모음
=>
1. 애플리케이션들의 최소한의 공통점을 찾아 하부 구조를 제공함으로써 개발자들로 하여금 시스템의 하부 구조를 구현하는데 들어가는 노력을 절감하게 해준다.
2. 기능적인 요구사항에 집중할 수 있게 한다.
3. 디자인 패턴과 같이 반복적으로 발견되는 문제를 해결하기 위한 솔루션을 제공한다.
디자인패턴과 프레임워크
디자인패던은 프레임워크의 핵심적인 특징이고, 프레임워크를 사용하는 애플리케이션에 그 패턴이 적용된다는 특징을 가지고있다. => 프레임워크는 디자인패턴과 함께 패턴이 적용된 기반 클래스 라이브러리를 제공하여 프레임워크를 사용하는 구조적인 틀과 구현코드를 제공한다.
ㅇ 개발자는 프레임워크의 기반코드를 확장하여 사용하면서 자연스럽게 프레임워크에서 사용된 패턴을 적용할 수 있게 된다.
라이브러리: 개발자가 라이브러리를 사용한다.(주도권이 개발자에 있다.)
프레임워크: 프레임워크가 개발자가 작성한 코드를 호출한다.(주도권이 프레임워크에 있다.)
=>스프링 컨테이너는 관리되는 빈들을 의존성주입을 통해 IoC를 지원한다.
스프링 프레임워크 : 자바엔터프라이즈개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크 => 로우레벨개발에 신경쓰지 않고 비즈니스로직 개발에 전념할 수 있다.
스프링 삼각형 : Portable Service Abstraction, DI, AOP, POJO
1. Portable Service Abstraction : 트랜잭션 추상화, OXM추상화, 데이터 액세스의 예외변환기능 등 기술적인 복잡함은 추상화를 통해 로우레벨의 기술 구현 부분과 기술을 사용하는 인터페이스로 분리한다.
2. DI : 유연하게 확장 가능한 객체를 만들어두고(인터페이스) 그 관계는 외부(컨테이너)에서 다이내믹하게 설정해준다.
3. AOP(관점지향프로그래밍) : 애플리케이션 로직을 담당하는 코드에 남아있는 기술관련코드를 분리해서 별도의 모듈로 관리한다.
4. POJO(Plain Old Java Object) : 객체지향 원리에 충실하면서, 특정 환경이나 규약에 종속되지 않고 필요에 따라 재활용할 수 있는 방식으로 설계된 객체
스프링프레임워크 특징:
1. 컨테이너 역할 : 자바 객체의 생명주기 관리하며 스프링 컨테이너로부터 필요한 객체를 가져와 사용할 수 있다.
2. DI(Dependency Injection) 지원 : 설정파일(XML)이나 어노테이션을 통해서 객체간의 의존관계를 설정할 수 있다.
3. AOP(관점지향프로그래밍) 지원 : 로깅, 보안과 같이 공통적으로 필요로 하는 모듈들을 핵심모듈에서 분리해서 적용할 수 있다.
4. POJO 지원 : 스프링 컨테이너에 저장되는 자바객체는 특정한 인터페이스를 구현하거나 특정 클래스를 상속받지 않아도 된다.
5. 영속성(Persistent)과 관련된 API지원 : MyBatis, Hibernate 등 데이터베이스 처리를 위한 ORM(객체관계매핑) 프레임워크들과의 연동 지원
IoC(Inversion of Control) : 제어의 역전. 인스턴스 생성부터 소멸까지의 인스턴스 생명주기 관리를 개발자가 아닌 컨테이너가 대신 해준다는 뜻이다.
'공부 > 스프링프레임워크' 카테고리의 다른 글
[spring] Spring JDBC (0) | 2021.11.17 |
---|---|
[spring] 사용자 관리 프로젝트 아키텍쳐 (0) | 2021.11.11 |
[spring] 빈 등록 메타정보 구성 및 의존관계 설정 어노테이션 (0) | 2021.11.11 |
[spring] DI, DL (0) | 2021.11.11 |
[spring] sw재사용을 높이는 방안 (0) | 2021.11.11 |