[Spring] Spring Framework
Spring Framework
한 문장으로 Spring을 이해하기 위해 어떤 문장을 써야 할지 고민이 많이 된다. 다른 블로그를 찾아보면 "자바 엔터프라이즈 개발을 편리하게 해주는 오픈소스 경량급 애플리케이션 프레임워크"라고 표현한다. 이 문장이 스프링에 대한 전반적인 설명이 담겨 있다고 생각하지만, 개발 입문하는 사람이 바로 받아들일 수 있는 문장처럼 보이지 않는다. 그래서 나의 기준으로 현 시점(개발자 준비생)에서 내가 생각하는 스프링은
수 많은 기술들(다양한 외부라이브러리 JSP, MyBatis, JPA 등)의 사용과 반복되는 코드 중복 최소화, 비즈니스 로직에 집중할 수 있는 프레임워크.
이 표현에는 부족한 부분이 있다고 생각하지만, 그 부분은 이후의 설명들에서 채워가나보록 하겠다. 기술이 있으면 우선적으로 살펴보는 내용이 그 기술에 대한 정의다. Spring이 무엇인지 확인 했으니 그 다음은 Spring의 특징을 살펴본다.
Spring 특징
🌸 POJO(Plain Old Java Object)
특정 인터페이스를 구현하거나 특정 클래스를 상속받지 않고 순수한 자바 코드를 객체를 구성하는 방식이다.
순수 JAVA 코드로 작성되기 때문에 생산성과 테스트에 유리하다는 장점이 있다.
getter와 setter로 이뤄진 객체라고 할 수 있다.
🌸 DI(Dependency Injection)
XML로 된 설정 파일이나 어노테이션을 이용해서 객체와 객체 간에 의존성 관계를 갖도록 한다.
코드 재사용을 높여 다양한 곳에서 사용할 수 있으며, 모듈 간의 결합도를 낮출 수 있다.
2023.09.02 - [Programming/Java] - [Spring] DI(Dependency Injection)
🌸 IoC(Inversion of Controller)
개발자가 클래스를 작성하고 객체를 사용하기 위해 직접 생성하는 역할을 담당했다. IoC는 스프링 컨테이너를 통해 직접 객체를 생성과 소멸을 관리한다. 한마디로 객체의 생명주기를 관리해주는 것이라고 할 수 있다. 스프링 컨테이너는 다른 말로 IoC 컨테이너라고도 말한다.
2023.09.02 - [Programming/Java] - [Spring] IoC
🌸 AOP(Aspect Object Programming)
로깅, 트랜잭션, 보안 등 여러 객체에서 공통적으로 사용하는 기능을 분리하여 관리할 수 있다.
분리해서 관리하는 것으로 코드의 재사용을 높일 수 있다는 장점이 있다.
2023.09.02 - [Programming/Java] - [Spring] AOP(Aspect Object Programming)