자바 스프링 부트

ksngh·2024년 7월 25일

자바스프링

목록 보기
3/8

스프링 부트를 공부하면서 이 프레임워크의 특성에 대해서 알아보고 정리해보았다. DI, IOC, AOP 등 추상적으로는 알고 있으나 정확하게 알고있는 것 같지 않은 것 같아서... 코드로 써보고 개념을 이해해보고자 한다.

싱글톤 패턴, 프록시 객체 등의 개념을 먼저 다루지는 않고 차근차근 이해해보고자 한다. 이를테면, DI를 이해해야 IOC를 이해할 수 있듯 스프링 부트의 특성에 따라 순서대로 정리해 보아야겠다.

우선, 스프링 부트의 특성은 다음과 같다.

유연성과 확장성

스프링은 모듈화된 구조로 되어 있어, 필요한 기능만 선택적으로 사용할 수 있다. (예: Spring Core, Spring MVC, Spring Data, Spring Security 등)을 통해 필요에 따라 기능을 확장할 수 있다.

의존성 주입(Dependency Injection, DI)

스프링의 핵심 개념 중 하나는 의존성 주입이다. DI를 활용하면 객체 간의 의존성을 외부에서 주입받아 설정할 수 있어, 코드의 결합도를 낮추고 유지보수성을 높일 수 있다. DI는 또한 객체 간의 관계를 명확히 하고, 테스트 코드를 작성하기 쉽게 만들어 준다.

  • 후에 또 포스팅 할 예정이지만, bean과 factory를 이해해야 DI의 개념을 이해할 수 있다. 스프링은 객체를 만들어주고 관리해준다.

AOP(Aspect-Oriented Programming)

스프링은 AOP를 지원하여 로깅, 트랜잭션 관리, 보안 등 공통된 기능을 분리해 코드의 가독성과 재사용성을 높인다. 이를 통해 비즈니스 로직과 공통 관심사를 분리하여 더 깔끔하고 유지보수하기 쉬운 코드를 작성할 수 있다.

  • 마찬가지로, 프록시 패턴을 이해해야 AOP를 완전히 이해할 수 있다.

테스트 용이성

스프링은 테스트 친화적인 프레임워크로, 단위 테스트와 통합 테스트를 쉽게 작성할 수 있다. 스프링의 DI 기능을 활용하면 테스트 코드에서 목 객체(mock object)를 사용하여 테스트 환경을 설정하기가 용이하다. 또한, 스프링 부트는 다양한 테스트 유틸리티를 제공하여 애플리케이션의 각 계층을 쉽게 테스트할 수 있게 한다.

정리

이 외에도 프로덕션 준비(TOMCAT, 보안 설정(security) 등) , 활발한 커뮤니티 등의 장점이 있지만, 우선 DI(IOC)와 AOP, 테스트 코드에 대해서 정리하려고 한다.

profile
백엔드 개발자입니다.

0개의 댓글