본문 바로가기
멋쟁이사자처럼 동아리/Level 1,2,3 과제

Level 2 Spring core

by PlusUltraCode 2024. 6. 23.

Spring Framework 학습 정리

IoC (Inversion of Control) 컨테이너

IoC 컨테이너 이해

  • IoC 컨테이너는 스프링 프레임워크의 핵심 개념 중 하나로, 객체의 생성과 관리를 담당합니다.
  • 개발자는 객체를 직접 생성하지 않고, 컨테이너가 객체를 생성하고 필요한 의존성을 주입합니다.
  • 이를 통해 객체 간의 결합도를 낮추고, 유연하고 테스트 가능한 애플리케이션을 만들 수 있습니다.

장점

  • 유연성: 코드의 변경 없이 객체 간의 의존성을 쉽게 교체할 수 있습니다.
  • 테스트 용이성: 의존성 주입을 통해 모킹(mocking)이 쉬워져 단위 테스트가 용이해집니다.
  • 유지보수성: 객체 생성과 의존성 관리를 중앙화하여 코드의 유지보수가 쉬워집니다.

계층화 (Layered Architecture)

계층화의 이해

  • 계층화 아키텍처는 애플리케이션을 논리적으로 구분된 계층으로 나누어 개발하는 방법입니다.
  • 일반적으로 표현 계층, 비즈니스 계층, 데이터 접근 계층으로 나뉩니다.

계층별 역할

  • 표현 계층 (Presentation Layer): 사용자와의 상호작용을 담당하며, 웹 애플리케이션에서는 주로 컨트롤러가 이 역할을 합니다.
  • 비즈니스 계층 (Business Layer): 비즈니스 로직을 담당합니다. 서비스 클래스들이 이 계층에 위치합니다.
  • 데이터 접근 계층 (Data Access Layer): 데이터베이스와의 상호작용을 담당합니다. DAO(Data Access Object) 클래스들이 이 계층에 위치합니다.

장점

  • 모듈화: 각 계층이 독립적으로 동작하여 모듈화가 가능합니다.
  • 유지보수성: 계층별로 책임이 분리되어 있어 변경이 용이합니다.
  • 재사용성: 각 계층의 기능을 다른 애플리케이션에서도 재사용할 수 있습니다.

Spring Bean

Spring Bean의 이해

  • Spring Bean은 스프링 IoC 컨테이너에 의해 관리되는 객체입니다.
  • Bean은 컨테이너가 생성, 초기화, 소멸을 관리합니다.

Bean 정의 방법

  • XML 파일: <bean> 태그를 사용하여 정의합니다.
  • 자바 애노테이션: @Component, @Service, @Repository, @Controller 등을 사용하여 정의합니다.
  • 자바 설정 클래스: @Configuration과 @Bean을 사용하여 정의합니다.

장점

  • 객체 관리: 객체 생명주기를 컨테이너가 관리하여 코드의 복잡도를 줄입니다.
  • 의존성 주입: 의존성 주입을 통해 객체 간의 결합도를 낮춥니다.
  • 테스트 용이성: 스프링 빈을 사용하여 단위 테스트와 통합 테스트가 용이해집니다.

HTML에서의 데이터 바인딩

데이터 바인딩의 이해

  • HTML 폼 요소와 서버 측 객체의 멤버 변수 이름이 동일해야 데이터가 올바르게 이동합니다.
  • 스프링 MVC에서는 @ModelAttribute, @RequestParam, @PathVariable 등을 사용하여 데이터를 바인딩합니다.

장점

  • 자동화: 폼 데이터를 자동으로 객체에 바인딩하여 코드의 양을 줄입니다.
  • 유지보수성: 폼 필드와 객체 필드의 이름을 일치시켜 유지보수가 쉬워집니다.
  • 간편함: 스프링의 자동 바인딩 기능을 통해 복잡한 데이터를 간편하게 처리할 수 있습니다.

느낀 점

  • IoC 컨테이너를 통해 객체 생성과 의존성 관리를 효율적으로 할 수 있어, 개발 생산성과 코드의 품질이 향상되었습니다.
  • 계층화 아키텍처를 이해하고 적용함으로써, 애플리케이션의 구조가 명확해지고 유지보수가 용이해졌습니다.
  • Spring Bean을 사용하여 객체의 생명주기와 의존성 관리를 스프링이 대신해줌으로써, 개발자가 비즈니스 로직에 더 집중할 수 있었습니다.
  • 데이터 바인딩을 통해 클라이언트-서버 간 데이터 전송이 자동화되어, 개발 시간이 단축되고 오류가 줄어들었습니다.

스프링 프레임워크의 이러한 기능들을 익히고 활용함으로써, 보다 효율적이고 유지보수 가능한 애플리케이션을 개발할 수 있게 되었습니다. 앞으로도 스프링의 다양한 기능을 학습하고 적용하여, 개발 역량을 지속적으로 향상시켜 나갈 것입니다.