재밌고 어려운 IT를 이해해보자~!
Spring Framework 본문
Spring Framework
Spring MVC
Spring Boot
Spring Data JPA ..등등 다양한 프로젝트로 발전중!
스프링은 자바 엔터프라이즈개발을 위한 오픈소스 경량 어플리케이션 프레임워크
어플리케이션 프레임워크는 개발의 모든 계층을 지원
프레임워크가 어플리케이션 수준의 인프라 스트럭처를 제공하므로 개발자는 업무로직 개발에만 전념 가능
스프링 프레임워크는 공통 프로그래밍 모델 및 Configuration 모델 제공
가장 기본이 되는 프로젝트는 Spring Framework!
https://spring.io/projects 참조~
Spring Framework란?
스프림 프레임워크 프로젝트는 스프링의 핵심 기능을 담고 있는 프로젝트
자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로서 엔터프라이즈급 애플리케이션을 개발하기 위한 모든 기능을 종합적으로 제공하는 경량화된 솔루션
엔터프라이즈급 개발이란 뜻대로만 풀이하면 기업을 대상으로 하는 개발
즉, 대규모 데이터 처리와 트랜잭션이 동시에 여러 사용자로 부터 행해지는 매우 큰 규모의 환경을 엔터프라이즈 환경이다.
Spirng Framework는 경량 컨테이너로 자바 객체를 담고 직접 관리한다.
객체의 생성 및 소멸 그리고 라이프 사이클을관리하며 언제든 Spring 컨테이너로 부터 필요한 객체를 가져와 사용가능
이는 Spirng이 IOC 기반의 Framework임을 의미
Spring Framework는 IOC(Inversion of Control)기반
일반적으로 지금까지 프로그램은
객체 결정 및 생성 -> 의존성 객체 생성 -> 객채 내의 메소드 호출 하는 작업을 반복했다.
이는 각 객체들이 프로그램의 흐름을 결정하고 각 객체를 구성하는 작업에 직접적으로 참여한 것!
즉, 모든 작업을 사용자가 제어하는 구조인 것입니다.
하지만 IOC에서는 이 흐름의 구조를 바꾼다.
OC에서의 객체는 자기가 사용할 객체를 선택하거나 생성하지 않는다. 또한 자신이 어디서 만들어지고 어떻게 사용되는지 또한 모른다.
자신의 모든 권한을 다른 대상에 위임함으로 써 제어권한을 위임받은 특별한 객체에 의해 결정되고 만들어진다.
즉, 제어의 흐름을 사용자가 컨트롤 하지 않고 위임한 특별한 객체에 모든 것을 맡기는 것
IOC란 기존 사용자가 모든 작업을 제어하던 것을 특별한 객체에 모든 것을 위임하여 객체의 생성부터 생명주기 등 모든 객체에 대한 제어권이 넘어 간 것을 IOC, 제어의 역전 이라고 합니다.
IOC의 구성요소 DI와 DL
IOC는 DI와 DL의 의해 구현된다.
DL(Dependency Lookup) - 의존성 검색
컨테이너에서는 객체들을 관리하기 위해 별도의 저장소에 빈을 저장하는데 저장소에 저장되어 있는 개발자들이 컨테이너에서 제공하는 API 를 이용하여 사용하고자 하는 빈 을 검색하는 방법
DI(Dependency Injection) - 의존성 주입
의존성 주입이란 객체가 서로 의존하는 관계가 되게 의존성을 주입하는 것
객체지향 프로그램에서 의존성 이란 하나의 객체가 어떠한 다른 객체를 사용하고 있음을 의미
IOC에서의 DI는 바로 각 클래스 사이에 필요로 하는 의존관계를 빈 설정 정보를 바탕으로 컨테이너가 자동으로 연결해 주는 것
Spring Framework의 특징 POJO (Plain Old Java Object)
이전 EJB(Enterprise JavaBeans)는 확장 가능한 재사용이 가능한 로직을 개발하기 위해 사용 되었었는데 EJB는 한가지 기능을 위해 불필요한 복잡한 로직이 과도하게 들어가는 단점이 있었다.
그래서 다시 조명을 받은게 POJO입니다. POJO는 gettet/setter를 가진 단순 자바 오브젝트로 정의한다.
이러한 단순 오브젝트는 의존성이 없고 추후 테스트 및 유지보수가 편리한 유연성의 장점을 가짐
이러한 장점들로 인해 객체지향적인 다양한 설계와 구현이 가능해지고 POJO의 기반의 Framework가 조명을 받고 있습니다.
Spring Framework 에서는 이러한 POJO을 지원하고 Spirng 홈페이지에는 이러한 글도 있다!
"POJO를 사용함으로써, 당신의 코드는 더욱 심플해졌고, 그로인해 테스트 하기에 더 좋으며, 유연하고, 요구사항에 따라 기술적 선택을 바꿀수 있도록 바뀌었다."
POJO는 좋은것!
Spring Framework의 특징 MVC (Model2)
Spring Framework의 구조
Spring Core
Spring Core는 Spring Container을 의미.
core라는 말 그대로 Container는 Spring Framework의 핵심이며 그중 핵심은 Bean Factory Container이다.
그 이유는 바로 Bean Factory는 IOC패턴을 적용하여 객체 구성 부터 의존성 처리까지 모든 일을 처리하는 역할을 하고 있기 때문
Spring Context
Spring context는 Spring Framework의 context 정보들을 제공하는 설정 파일
pring Context에는 JNDI, EJB, Validation, Scheduiling, Internaliztaion 등 엔터프라이즈 서비스들을 포함한다.
Spring AOP
Spring AOP module은 Spring Framework에서 관점지향 프로그래밍을 할 수 있고 AOP를 적용 할수 있게 도와주는 Modul
Spring DAO
DAO란 Data Access Object의 약자로 Database Data에 접근하는 객체
Spring JDBC DAO는 추상 레이어를 지원함으로써 코딩이나 예외처리 하는 부분을 간편화 시켜 일관된 방법으로 코드를 짤 수 있게 도와준다.
Spring ORM
ORM이란 Object relational mapping의 약자로 간단하게 객체와의 관계 설정을 하는 것
Spring에서는 Ibatis, Hibernate, JDO 등 인기있는 객체 관계형 도구(OR도구)를 사용 할 수 있도록 지원
Spring Web
Spirng에서 Web context module은 Application module에 내장되어 있고 Web기반의 응용프로그램에 대한 Context를 제공하여 일반적인 Web Application 개발에 필요한 기본적인 기능을 지원
그로인해 Jakarta Structs 와의 통합을 지원한다.
Spring MVC
Spring에서는 MVC에서는 Model2 구조로 Apllication을 만들 수 있도록 지원한다!
'개인공부' 카테고리의 다른 글
SQL자격검정 실전문제 (0) | 2024.02.26 |
---|---|
SQLD 정리 (1) | 2024.02.25 |
프로젝트 관련 궁금증 정리 (0) | 2024.02.22 |
Parameter(파라미터) 와 Attribute(속성) 의 차이 (0) | 2024.01.27 |
JSTL practice (0) | 2024.01.26 |