Programming/Spring

Spring (1) - Spring Framework란?

코딩하는 포메라니안 2022. 4. 15. 16:25

1. 등장 배경

 

웹사이트의 규모와 활용 범위가 커지면서 전보다 많은 서비스를 제공해야 했다.

결론적으로 POJO + 경량 프레임워크가 사용되게 되었다. 

 

1) POJO (Plain Old Java Object)

특정 프레임워크나 기술에 독립적인 자바 객체

ex) 다른 프레임워크로 작동시켜도 되도록 호환성을 높임

 

2) 경량 프레임워크

Spring은 기존에 사용되던 EJB보다 약 10배 가벼운 프레임워크이다.

 

 

 

2. SpringFramework의 핵심 기능

1. POJO (Plain Old Java Object)

특정 프레임워크나 기술에 독립적인 일반 자바 객체

 

 

2. PSA (Portable Service Abstraction)

추상화를 통해 Low Level의 기술 구현 부분과 기술을 사용하는 인터페이스로 분리한다.

ex) 어떤 데이터베이스를 사용하든지, 인터페이스를 통해 동일하게 사용할 수 있다.

 

 

3. IoC/DI (Inversion of Control / Dependency Injection)

직역하면 '제어의 역전'이다. 모든 객체를 개발자가 생성하고 삭제, 의존 관계 설정(has 관계 등)등 관리하는 것이 아니라, Spring Container가 객체의 라이프사이클을 관리한다. 이때, 객체는 사용하던지 말던지 무조건 미리 만들어 놓고 필요할 때 주입시킨다.

 

*has 관계 = 한 클래스가 다른 클래스를 멤버 변수(속성)로 갖는 경우

 

 

4. AOP (Aspect Oriented Programming - 관점 지향 프로그래밍)

보통 '관심사의 분리'라고 설명한다. 풀어서 설명하자면,  여러 메서드에서 공통으로 사용하는 기능과 특정 메소드에서만 사용하는 핵심기능을 분리하는 것이다.

Spring은 Proxy기반의 AOP를 지원하므로, 핵심이 아닌 기능을 분리해서 적용할 수 있다.

 

 

 

 


 

*Spring 관련 문서

 

1) Spring Framework Documentation

https://docs.spring.io/spring-framework/docs/current/reference/html/index.html

 

Spring Framework Documentation

Overview history, design philosophy, feedback, getting started. Core IoC Container, Events, Resources, i18n, Validation, Data Binding, Type Conversion, SpEL, AOP. Testing Mock Objects, TestContext Framework, Spring MVC Test, WebTestClient. Data Access Tran

docs.spring.io

 

2) Spring Framework API

https://docs.spring.io/spring-framework/docs/current/javadoc-api/

 

Spring Framework 5.3.19 API

 

docs.spring.io