프로그램을 쉽게 개발할 수 있도록 도와주는 틀을 제공하는 소프트웨어 환경
정해진 규칙에 맞게 수동적으로 필요한 코드를 구현하여 사용한다.
예) Spring, Node.js, Django, Ruby on Rails 등
프로그램을 쉽게 개발할 수 있도록 필요한 기능들을 모아놓은 도구들의 집합
각 함수들은 독립성을 가지며, 사용자가 능동적으로 필요한 함수만 호출하여 사용한다.
예) jQuery, Apache 등
운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스
자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로
동적 웹 사이트 개발을 위한 여러 가지 서비스를 제공
대한민국 공공기관의 웹 서비스 개발 시 사용을 권장하고 있는
전자정부 표준 프레임워크(Spring MVC Project 기반 프레임워크)의
기반 기술로서 사용
IOC (Inversion of Control) : 제어 반전 ⭐
객체 생성(new), 생명주기 관리(GC) 등의 모든 제어 권한을
개발자가 아닌 프레임워크(Container)가 가짐
장점 : 효율적인 메모리 관리, 코드 길이 감소
DI (Dependency Injection) : 의존성 주입 ⭐
개발자가 직접 의존 객체를 생성하는 것이 아닌
설정 파일 또는 어노테이션을 통해 객체 간의 의존 관계를 설정하여
외부에서 객체 생성 후 주입 받아 사용
장점 : 모듈 간의 결합도 감소, 유연성 증가
POJO 기반 프레임워크 (Plain Old Java Object) ⭐
특정 기술이나 라이브러리의 내용을 상속 받지 않고
getter, setter와 같은 기본적인 기능만을 가진 순수한 자바 객체
장점 : 객체지향적 설계, 코드 길이 감소, 유지보수성 증가
Spring AOP (Aspect Oriented Programming) : 관점 지향 프로그래밍 ⭐
주요 핵심 기능에서 트랜잭션, 로깅, 보안 등
여러 모듈, 여러 계층에서 공통에서 필요로 하는 부가적인 기능을 분리하여
관점을 기준으로 모듈화하여 관리
Spring JDBC
MyBatis, Hibernate 등의 데이터베이스를 처리하는
영속성 프레임워크와 연결할 수 있는 인터페이스 제공
Spring MVC
MVC 디자인 패턴을 통해 웹 어플리케이션의
Model, View, Controller 사이의 의존 관계를 DI 컨테이너에서 관리하여
개발자가 아닌 서버가 객체를 관리하는 웹 애플리케이션을 구축
PSA (Portable Service Abstraction)
다른 여러 모듈을 사용함에 있어 별도의 추상화 레이어를 제공하여
개발자가 모듈의 의존 없이 프로그램에 집중할 수 있게 됨