스프링 프레임워크
- 프레임워크: 작업 환경. 차, 비행기, 배 같은 운송수단. 대체가 어렵고, 규칙을 따라야함
- 하나의 애플리케이션을 구축할 때, 모든 애플리케이션의 공통적인 개발 환경을 제공해주는 것
- 개발에 필요한 화면구현, DB 연동, 개발 환경들에 공통적인 부분을 제공함으로써 개발 시간과 리소스 비용을 절감해 생산성을 높여주는 것
- 라이브러리: 톱, 망치, 삽 같은 도구. 도구를 선택하여 사용. 비교적 자유로움
EJB
- 엔터프라이즈 자바빈즈(Enterprise JavaBeans): 기업환경의 시스템을 구현하기 위한 서버측 컴포넌트 모델
- 비즈니스 객체들을 관리하는 컨테이너를 만들어서 필요할 때마다 컨테이너로부터 객체를 받는 식으로 관리
- 애플리케이션의 업무 로직을 가지고 있는 서버 애플리케이션
- 컴포넌트와 모듈: 어떠한 구조와 기능의 최소 단위
- 컴포넌트: 실행 중인 소프트웨어의 활동 단위
- 모듈: 만들어진 산출물의 구현 단위
- 자바 빈: 자바 객체를 재사용 가능하게 컴포넌트화 시킬 수 있는 코딩 방침
- 자바로 작성된 소프트웨어 컴포넌트
- 지켜야 할 사항이 있음
- 쉽게 말해 규칙성이 있는 데이터 클래스
- POJO: 오래된 방식의 간단한 자바 오브젝트. 중량 프레임워크들을 사용하게 되면서 해당 프레임워크에 종속된 “무거운” 객체를 만들게 된 것에 반발해서 사용하게 된 용어
- AOP
- OOP를 더욱 보완, 확장하여 OOP를 OOP 답게 사용할 수 있도록 도움
- AOP 도입 전까지는 객체의 재사용에도 불구하고 필수적으로 반복되는 코드 중복은 여전
- AOP의 가장 기초 개념은 ‘관심의 분리’
- 기능을 비즈니스 로직과 공통 모듈로 구분한 후 개발자의 코드 밖에서 필요한 시점에 비즈니스 로직에 삽입하여 실행
- 핵심 관점(비즈니스 로직) + 횡단 관점(트랜잭션, 로그, 권한 체크 등)
- 계좌이체, 입출금, 이자계산이라는 로직을 처리할 때, 모두 똑같이 로깅, 보안, 트랜잭션을 처리해줘야 함
- 하지만, AOP 에서는 로깅, 보안, 트랜잭션이라는 공통 관심을 따로 빼내어 계좌이체, 입출금, 이자계산이라는 핵심 관심에 횡단으로 삽입
- 각 객체별로 처리했던 것을 각 관점별로 외부에서 접근하는 것이 핵심
- 개발자는 계좌이체, 입출금, 이자계산과 같은 핵심 기능을 만들고, 공통적인 관심 기능(로깅, 보안, 트랜잭션)을 처리하는 모듈을 분리해서 개발한 후, 필요한 시점에 자동으로 공통적인 관심 기능이 삽입되도록 하는 것
- DI
- 의존성: 한 기능을 실행하기 위해 다른 기능(클래스)이 필요한 경우, 의존성이 높음
- 의존성 주입: 필요한 객체를 직접 생성하는 것이 아닌, 외부로부터 필요한 객체를 받아서 사용하는 것
- 이를 통해 객체 간의 결합도를 줄이고 코드의 재활용성을 높여줌
- DI란, 외부에서 두 객체 간의 관계를 결정해주는 디자인 패턴으로, 인터페이스를 사이에 둬서 클래스 레벨에서는 의존 관계가 고정되지 않도록 하고 런타임 시에 관계를 다이나믹하게 주입하여 유연성을 확보하고 결합도를 낮출 수 있게 해줌
- 두 객체 간의 관계를 맺어주는 것을 의존성 주입
- IoC: 어떤 객체를 사용할지에 대한 책임이 BeanFactory와 같은 클래스에게 넘어갔고, 자신은 수동적으로 주입받는 객체를 사용
- MVC
- Model, View, Controller
- Model: 애플리케이션의 정보, 정보들의 가공. 로직
- View: 사용자 인터페이스 요소
- Controller: 데이터와 사용자 인터페이스를 잇는 다리. 이벤트 처리