스프링 프레임워크란?
- 자바 엔터프라이즈 개발을 위한 오픈 소스 애플리케이션 프레임워크
- 동적인 웹 사이트를 개발하기 위한 서비스를 제공
스프링 프레임워크의 특징
- 경량 컨테이너
- 자바 객체를 직접 관리
- 각각의 객체 생성, 소멸과 같은 생명주기를 관리하며 스프링으로부터 필요한 객체를 얻음
- 제어의 역전 IOC(Inversion of control)
- 일반적으로 사용자가 코드의 흐름을 주도하며 객체를 구성하고 모든 작업을 제어했다면, IOC는 사용자가 아닌 특별한 객체가 제어 권한을 위임받아 각 객체와 흐름을 제어하는 것.
- 코드 간의 중복을 줄여 무거운 서버 배치의 부담을 줄이며, 유연한 코드 작성과 유지 보수 등을 편하게 할 수 있음
- DI(Dependency Injection) : 의존성 주입
- 각 객체가 서로 의존하는 관계가 될 수 있도록 의존성을 주입합니다. 각각의 계층이나 서비스들 간에 의존성이 존재할 경우 빈(Bean) 설정 정보를 바탕으로 컨테이너가 자동으로 연결
- DL(Dependency Lookup) : 의존성 검색
- 컨테이너에서 객체를 관리하기 위해 별도의 저장소에 빈(bean)을 저장하고 개발자들은 컨테이너에서 제공하는 API를 이용하여 사용하고자 하는 빈(bean)을 검색
- Bean :
- 스프링 컨테이너가 관리하는 자바 객체
- POJO(Plain Old Java Object)
- 단순 자바 오브젝트(평점 한 자바 객체)입니다. 의존성이 없으며 간결한 코드를 작성할 수 있도록 도와줌.
- 특별한 클래스나 인터페이스를 구현하지 않아도 되기 때문에 자유롭게 코드를 작성할 수 있음.
- 스프링 프레임워크에서 POJO를 사용하면 다른 기술과의 의존성이 줄어들어 테스트 및 유지 보수가 편리한 유연성을 가짐
- AOP(Aspect-Oriented Programming)
- 관점 지향 프로그래밍을 의미
- 로킹, 트랜잭션, 보안 등 다루기 어려운 기능을 프로그램의 핵심 로직과 분리하여 관리하는 방법을 제공
- 따라서 핵심 로직을 변경하지 않고 부가기능을 추가할 수 있기 때문에 개발 및 유지 보수가 용이해지며 코드의 재사용 성과 가독성도 높이고 전체적인 구조의 개선이 가능해짐.
스프링 프레임워크 모듈
- spring-core
- ioc 컨테이너와 DI를 구현하는 코드 포함
- spring-context
- 스프링 ioc 컨테이너를 사용하여 개발을 지원하는 모듈.
- application context 인터페이스 제공, JNDI, EJB, Validation, Scheduiling, Internalization 등의 엔터프라이즈 서비스 포함
- spring-aop
- aop를 지원하는 모듈.
- 애플리케이션 전반에 걸쳐 반복적으로 발생하는 로직들을 모듈화해서 관리할 수 있도록 도와줌
- spring-dao
- 데이터베이스와의 통신을 담당하는 객체로 애플리케이션과 데이터베이스 사이의 인터페이스 역할을 함
- spring-orm
- 객체 관계형 도구를 사용할 수 있도록 지원
- spring-web
- 웹 개발에 필요한 기능 지원
- spring-mvc(model view controller)
- 웹 프레임워크로 mvc를 통해 웹 개발을 하면 클라이언트에서 요청한 uri를 처리하고 필요한 모델 데이터를 가져와 뷰에 전달하는 것까지 간단하게 처리 가능
- spring-beans
- Bean 클래스와 BeanFactory 인터페이스 제공
- 기타: spring-websoket, spring-test, spring-data, spring-security
스프링 프레임워크가 장점
- 생선성
- 다양한 기능과 라이브러리를 제공하여 생산성이 높습니다. 또한 코드의 재사용성도 높기때문에 빠른 개발을 할 수 있습니다.
- 유지보수성
- 의존성 주입, 관점지향 프로그래밍등의 기능을 제공하여 유지보수성을 높일 수 있습니다. 또한 다양한 테스트 기능을 제공하여 개발자들이 효과적으로 테스트를 수행 가능
- 확장성
- 모듈화와 의존성 주입을 통해 새로운 요구사항이나 기능을 빠르게 추가할 수 있기때문에 애플리케이션을 쉽게 확장할 수 있음
- 커뮤니티
- 많은 분들이 사용하는 만큼 대규모 커뮤니티를 가지고 있기 때문에 많은 개발자들의 활발한 지원과 정보 공유가 이루어지고 있습니다. 따라서 개발시 참고할 수 있는 소스와 정보가 많아 문제 해결 등에 지원을 받을 수 있음
'서버' 카테고리의 다른 글
스프링 부트와 JPA 활용 (0) | 2023.05.12 |
---|---|
Spring boot 란 (0) | 2023.05.11 |
개인 서버 채굴 해킹 사례 및 분석 (1) | 2022.07.08 |
Django을 위한 웹 지식 (0) | 2022.06.20 |
개인용 서버 만들기 5편(딥러닝 서버 구축 2편) (0) | 2022.06.19 |