- 생명주기 관리: 스프링 프레임워크는 Java 객체의 생성, 소멸과 같은 라이프 사이클을 직접 관리하며 스프링으로부터 필요한 객체를 가져와 사용할 수 있다.
- 제어 역전(Inversion of Control, IoC): 전통적인 프로그래밍에서는 개발자가 작성한 프로그램이 외부 라이브러리의 코드를 호출해서 이용했다. 제어 역전은 이와 반대로 외부 라이브러리 코드가 개발자의 코드를 호출하게 된다. 즉, 제어권이 프레임워크에게 있어 필요에 따라 스프링 프레임워크가 사용자의 코드를 호출한다.
- POJO(Plain Old Java Object) 방식: POJO는 Java EE의 EJB 를 사용하면서 해당 플랫폼에 종속되어 있는 무거운 객체들을 만드는 것에 반발하며 나타난 용어다. 별도의 프레임워크 없이 Java EE를 사용할 때에 비해 특정 인터페이스를 직접 구현하거나 상속받을 필요가 없어 기존 라이브러리를 지원하기가 용이하고, 객체가 가볍다.
- 높은 확장성: 스프링 프레임워크에 통합하기 위해 간단하게 기존 라이브러리를 감싸는 정도로 스프링에서 사용이 가능하기 때문에 수많은 라이브러리가 이미 스프링에서 지원되고 있고 스프링에서 사용되는 라이브러리를 별도로 분리하기도 용이하다.
- 의존성 주입(Dependency Injection, DI): 프로그래밍에서 구성요소 간의 의존 관계가 소스코드 내부가 아닌 외부에서 설정을 통해 정의되는 방식이다. 코드 재사용을 높여 소스코드를 다양한 곳에 사용할 수 있으며 모듈간의 결합도도 낮출 수 있다. 계층, 서비스 간에 의존성이 존재하는 경우 스프링 프레임워크가 서로 연결시켜준다.
- 관점 지향 프로그래밍(Aspect Oriented Programming, AOP): 로깅, 트랜잭션, 보안 등 여러 모듈에서 공통적으로 사용하는 기능을 분리하여 관리할 수 있다. AspectJ를 포함하여 사용할 수 있고, 스프링에서 지원하는 실행에 조합하는 방식도 지원한다. 추상/부모/클래스나 인터페이스로 관리된다는 게 아니라 모듈을 관리해주는 모듈을 상하/인터페이스 관계없이 따로 마련한다는 개념에 가깝다. 반복할당을 줄이기 위해 스프링 어노테이션을 사용하는 것이라고 보면 된다.
- 영속성과 관련된 다양한 서비스 지원: iBATIS나 하이버네이트 등 이미 완성도가 높은 데이터베이스 처리 라이브러리와 연결할 수 있는 인터페이스를 제공한다.
'Spring > Springboot' 카테고리의 다른 글
📝 절차지향 / 객체지향 / 관점지향 프로그래밍 정리 (0) | 2022.11.18 |
---|---|
📝 스프링에서 DI (의존성 주입) 를 사용하는 이유 (0) | 2022.11.18 |
📝 스프링(Spring) 예외(Exception)처리 1 (0) | 2022.11.18 |
📝 AOP(Aspect Oriented Programming) 관점 지향 프로그래밍 개념 (0) | 2022.11.16 |
📝 Spring Bean이란 무엇이며 어떻게 등록해야 할까? (0) | 2022.11.16 |