라이브러리와프레임워크의 차이
라이브러리( Library )
。단순 활용 가능한도구의 집합
。사전에개발자에 의해 미리 작성된소스코드로서 필요 시 다른개발자에 의해 사용될 수 있도록 기능
프레임워크( Framework )
。개발자가SW를 개발 시개발의 베이스가 되는틀을 제공하는 역할을수행
▶개발시프레임워크가 제공하는틀을 재사용하면서 개발생산성 증진 및 일정 수준의퀄리티를 보장
Spring사용 전 기존EJB의 문제점
。이전까지는Java를 통해JVM을 활용하여객체를 생성 시결합및관리하는 코드를개발자가 직접 작성
。EJB 환경에서는 다음 코드와 같이 개발됨MemberDB memberDB = new MemberDB(); MemberService memberService = new MemberService(memberDB); memberService.join(1L, "정수");。개발자가
객체를 직접 생성 및 간강한결합이 발생하여SOLID - DIP 원칙을 위배하는 문제가 존재.
▶Spring의IoC는객체를Spring Context에 의해 자동으로 관리되도록 설정 및의존성주입을 통한객체간Loose Coupling을 제공하므로 객체간결합도를 줄이고 유연한 구조 제공
EJB( Jarkata Enterprise Beans )
。서버측 어플리케이션의생산성향상과이동성을 실현하기 위해 제작한 규격.
▶ 기업환경의 시스템을 구현하기 위한Server측의Component 모델
Spring Framework
。
Spring을 이용하여Application을 개발 시 기반이 되는Framework
▶ 다양한Spring Module로 구성. ( ex :MVC,Core,WebFlux..etc)
。IoC/AOP/PSA의 3가지 핵심기능을 제공
。Spring은 모든POJO를 지원
▶ 모든POJO를Spring Bean으로 생성가능
Spring Framework특징
。프레임워크이므로 일정 수준의 개발 퀄리티를 보장
。프레임워크가 제공하는 보증된틀을 재사용하여 개발 생산성을 증진
▶ 제공된틀에서비즈니스 로직을 작성하여서비스를 생성
。기존자바 프로젝트보다프로젝트설정을 간소화하였으나 여전히 복잡하고xml기반의 설정만 가능하며 자동화된설정이 지원되지않음
▶Spring Boot를 통해 이러한 단점을 보완
IoC:
。개발자가new를 통해자바객체를 직접 생성하는게 아닌Spring Context(IoC Container)에 의해Spring Bean을 생성 및 관리를 수행하는 특성
。어플리케이션 Runtime시Spring Context에 의해Spring Bean을 자동으로 생성하여 필요한 곳으로Auto-Wiring하여DI를 통해주입하여 공급 후폐기하는Runtime System구축
Spring Framework가 여러모듈로 분할된 이유?
▶Architectural Flexibility
。요구사항에 따라 필요한모듈을 유연하게 선택하여 사용
▶Application구축 시Spring Framework의 모든Module중 구현에 필요한Module만 선택적으로 사용하도록Module이분할
ex)DB와 통신하는Spring Application을 구축 시Spring Module중Spring MVC,Core,JDBC,JPA에 해당하는모듈만 선택하여 사용하고 나머지모듈은 사용 x
Spring Module
Spring Module종류
Spring Web
。일반적인Web application개발에 필요한 기본기능을 제공하는 모듈
REST API의빌드과정을 간소화.
。@Controller,@RestController,@RequestMapping("/courses")의 어노테이션을 지원
Web Reactive
。Spring WebFlux
Data Access/Integration:
。Spring JDBC,Spring JPA
Integration:
。Spring JMS ( 다른 app`과 통합 시 사용하는 기능 )
Unit Test:
。Spring MVC Test