프레임워크(Framework)
-
프레임워크는 어떠한 목적을 달성하기 위해 복잡하게 얽혀있는 문제를 해결하기 위한 구조며, 소프트웨어 개발에 있어 하나의 뼈대 역할을 한다.
→ 소프트웨어적 : 기능(클래스,인터페이스)을 미리 만들어놓은 반제품
스프링 프레임워크
- EJB라는 겨울을 넘어 새로운 시작이라는 뜻으로 시작된 스프링은 현재는 다양한 생태계를 구축하고 있다.
- 자바 웹 애플리케이션을 개발하기위한 오픈소스 프레임워크
→ 경량 프레임워크 / 경랑 컨테이너
EJB(Enterprise Java Beans)
*컨테이너 : tomcat (서블릿 컨테이너), 서블릿 생성, 초기화, 서비스 실행, 소멸
스프링 < - > 스프링부트
스프링 (Spring Legacy Project)
- EJB보다 가볍고 학습하기 쉬운 경량 프레임워크이다.
- POJO(PIain Old Java Object) 기반의 구성
- 제어의 역행( IoC, Inversion of Control) 애플리케이션 간의 느슨한 결합을 제어
- 의존성 주입(DI, Dependency Injection)을 지원
- 관점지향프로그래밍( AOP, Aspect-Oriented Programming) 자원관리 수행
- 다양한 자료 많음 (구글링 쉽다. GPT가 잘찾아주고 기존의 회사 프로젝트를 이해하기 쉽고 아직까지도 실무에 가장 많이 사용
- 모든 버전의 스프링을 사용가능(라이브러리 포함)
- 초반에 어려움(설정,개발환경 구성), WAS를 사용(tomcat) 결과를 확인하기 위한 리소스가 많이 필요함
스프링부트 (Spring starter Project) 2~3버전
- 별도의 설정이 필요없음 (간편한 설정)
- 별도의 WAS가 필요없음(내장서버)
- 처리속도 빠른편 (간단한 테스트 사용 용이)
- 다양한 버전의 스프링/라이브러리 사용 X (자동으로 권장버전을 찾아서 사용)
- 기존의 설정과 다른방식의 개발 (적응필요)
- JSP(view) 설정이 별도 작성필요 ⇒ HTML(view) → 스프링 타임리프(thymeleaf)
Maven : 빌드 도구 - 프로그램에 필요한 라이브러리 사용
- maven update 사용
- .m2 폴더 리셋
제어의 역행(IoC, Inversion of Control)
- 특정 동작을 개발자가 처리하는 것이 아니라 외부에서 처리 되도록 하는 것
→ 서블릿/객체(빈)을 개발자가 직접 코드로 생성하지 않고, 프레임워크가 처리
- 의존성 주입(DI, Dependency Injection)
→ 제어의 역행을 바탕으로 필요한 정보를 외부에서 결정해서 연결시키는 것
→ 개발자가 직접 생성한 코드가 아닌, 프레임워크가 생성해놓은 객체를 사용하는 것
*관점지향프로그래밍(AOP, Aspect-Oriented Programming)
- 중요(핵심)기능과 보조기능을 분리 구현함으로 프로젝트의 모듈성 증가
스프링 주요 기능
- CORE : 다른 기능,설정들을 분리하기 위한 IoC를 제공
- CONTEXT : 스프링의 기본기능, 애플리케이션의 각 기능을 수행하는 빈(객체)를 접근 가능
- DAO : JDBC 기능을 조금더 편하게 사용가능한 기능제공
- ORM: 마이타비스, 하이버네이트 등 디비관련(영속성) 연동 기능을 제공
- AOP: 관점 지향 프로그래밍 지원
- WEB : 웹 개발에 필요한 전반적인 설정을 지원(필터)
- WEBMVC : 스프링 MVC 구현 기능 제공