About Spring Framework

koonlx·2024년 11월 5일

Spring

목록 보기
1/7

의존성 주입 (Dependency Injection, DI)

  • 개념: 객체 간의 의존 관계를 코드가 아닌 외부에서 주입하는 디자인 패턴이다. 이를 통해 객체는 직접 다른 객체를 생성하거나 관리하지 않고, 외부에서 필요한 의존성을 제공받는다.
  • 장점: 코드의 재사용성과 테스트 가능성을 높이고, 코드의 결합도를 낮추어 유지보수가 쉬워진다.
  • 예시: Spring의 @Autowired 애너테이션을 통해 의존성 주입이 이루어진다.

제어의 역전 (Inversion of Control, IoC)

  • 개념: 프로그램의 제어 흐름을 개발자가 아닌 프레임워크가 관리하는 개념이다. 개발자는 프레임워크에 필요한 로직만 작성하고, 프레임워크가 전체적인 실행 흐름을 제어한다.
  • IoC 컨테이너: Spring은 IoC 컨테이너(주로 ApplicationContext)를 통해 객체의 생명주기를 관리하고 DI를 제공한다.

Spring Bean

  • 개념: Spring 컨테이너에 의해 관리되는 객체를 Spring Bean이라고 한다.
  • Bean의 라이프 사이클: Spring은 Bean의 생성, 초기화, 소멸 등을 자동으로 관리한다. 이를 통해 개발자는 객체 관리의 부담을 덜 수 있다.
  • 정의 방법: 주로 @Component, @Service, @Repository 등의 애너테이션을 사용하거나 XML 설정 파일을 통해 정의할 수 있다.

Spring AOP (Aspect-Oriented Programming)

  • 개념: 공통적으로 사용되는 기능(예: 로깅, 보안, 트랜잭션 관리)을 각 모듈에 중복 작성하지 않고, 횡단 관심사를 별도로 모듈화하는 프로그래밍 패러다임이다.
  • 적용 예시: @Aspect 애너테이션을 사용하여 메서드 실행 전후에 특정 로직을 삽입할 수 있다.
  • 장점: 코드의 가독성을 높이고 유지보수를 용이하게 한다.

Spring MVC (Model-View-Controller)

  • 개념: 웹 애플리케이션 개발을 위한 아키텍처 패턴으로, 요청을 처리하고 응답을 생성하는 구조를 제공한다.
  • 구조:
    • Model: 데이터와 비즈니스 로직을 관리.
    • View: 사용자에게 보여지는 화면입니다. JSP, Thymeleaf 등이 View로 사용.
    • Controller: 사용자 요청을 받고 적절한 비즈니스 로직(Model)을 호출하여 View에 데이터를 전달.
  • 주요 애너테이션: @Controller, @RequestMapping, @RestController 등.

Spring Boot

  • 개념: Spring Framework의 설정을 간소화하고 개발자의 생산성을 높이기 위해 만들어진 프로젝트이다. Spring Boot는 코드의 반복적인 설정 작업을 줄이고, 내장된 Tomcat 서버를 통해 독립 실행 가능한 애플리케이션을 쉽게 만들 수 있다.
  • 특징: application.properties 또는 application.yml을 통해 환경 설정을 간편하게 관리할 수 있으며, 자동 설정 기능이 풍부한다.
  • 장점: 빠른 개발 속도, 독립 실행형 애플리케이션 패키징, 내장 서버 등.

Spring Data JPA

  • 개념: 데이터베이스와의 상호작용을 단순화하고 JPA(Java Persistence API) 기반으로 효율적으로 ORM을 사용할 수 있도록 지원한다.
  • 주요 기능: CRUD (Create, Read, Update, Delete) 작업을 위한 리포지토리 인터페이스 제공 (JpaRepository).
  • 장점: 복잡한 SQL을 작성하지 않고도 데이터베이스 작업을 할 수 있어 개발 생산성을 높여준다.

트랜잭션 관리

  • 개념: 데이터 일관성과 무결성을 유지하기 위해 여러 데이터베이스 작업을 하나의 단위로 묶어 관리한다.
    Spring에서의 트랜잭션 관리: @Transactional 애너테이션을 사용하여 메서드나 클래스 단위로 트랜잭션을 선언적으로 관리할 수 있다.

Spring Security

  • 개념: 애플리케이션의 인증과 권한 부여를 관리하는 프레임워크로, 보안과 관련된 모든 것을 처리할 수 있다.
  • 주요 기능: 사용자 인증, 권한 관리, CSRF 보호, 세션 관리 등.
  • 설정: SecurityConfig 클래스를 만들어 설정할 수 있으며, @EnableWebSecurity 애너테이션을 통해 적용한다.
profile
Server Developer

0개의 댓글