Spring Core
→ 자바의 오픈소스 애플리케이션 프레임 워크중 하나로 스프링의 기본 철학은 특정 기술에 종속 되지 않고 객체를 관리할 수 있는 프레임 웍을 제공 하는 것. 컨테이너로 자바 객체를 관리하면서 DI(의존성 주입)과 제어의 역전(IoC)를 통해 결합도를 낮추게 됩니다.
DI
IoC
ORM
JPA는 인터페이스, 구현체로는 하이버네이트
비즈니스 로직에 집중할 수 있고, 객체 중심 개발을 할 수 있게 합니다. 메소드를 호출하는 것 만으로 쿼리를 사용할 수 있기 때문에 생산성이 향상되고, 유지보수 비용을 절감시킵니다.
단점으로는 실행 속도가 조금은 느리다는 점과, 복잡한 쿼리 표현이 어렵다는 점이 있습니다.
스프링이란?
DI란?
DI(Dependency Injection)는 스프링 프레임워크에서 IoC(Inversion of Control) 원칙을 구현하는 주요 방법입니다. DI는 객체 간의 의존 관계를 애플리케이션 코드가 아닌 외부 컨테이너가 관리하도록 하는 패턴입니다.
스프링에서 DI는 주로 스프링 컨테이너가 관리하는 빈(Bean) 객체에 의해 구현됩니다. 스프링 컨테이너는 빈의 생성, 초기화, 소멸 등 생명 주기를 관리하며, 각 빈 간의 의존성을 주입하는 역할을 담당합니다.
스프링에서는 DI를 주로 다음 두 가지 방식으로 구현합니다:
이러한 DI의 이점은 다음과 같습니다:
따라서 스프링의 DI는 객체의 생성과 관리, 그리고 객체 간의 의존성을 안정적으로 관리하면서, 코드의 재사용성, 유지보수성, 테스트 용이성 등을 향상시키는 중요한 메커니즘이라고 할 수 있습니다.
디스패처 서블릿이란?
스프링의 디스패처 서블릿(DispatcherServlet)은 스프링 MVC 프레임워크의 핵심 컴포넌트로, 모든 HTTP 요청을 중앙에서 처리합니다. 스프링 웹 애플리케이션에서 디스패처 서블릿은 '프런트 컨트롤러' 역할을 하며, 클라이언트 요청을 적절한 컨트롤러에게 전달하고, 컨트롤러가 반환한 결과를 클라이언트에게 반환하는 역할을 합니다.
디스패처 서블릿의 주요 기능은 다음과 같습니다:
스프링의 디스패처 서블릿은 이러한 과정을 통해 요청 처리와 응답 반환을 중앙에서 관리하고, 애플리케이션의 아키텍처를 깔끔하게 유지하는 데 도움을 줍니다. 이는 스프링 MVC 프레임워크가 재사용성과 유지 보수성을 갖출 수 있도록 하는 핵심 요소 중 하나입니다.
디스패처 서블릿으로 인한 web.xml 역할 축소
AOP란?
AOP 용어 설명
AOP 사용 경험 : 공통 로그 구현
필터와 인터셉트 차이
스프링(Spring)과 스프링 부트(Spring Boot)는 둘 다 자바로 작성된 애플리케이션을 위한 프레임워크지만, 이들 사이에는 몇 가지 중요한 차이점이 있습니다.
스프링(Spring):
스프링 부트(Spring Boot):
따라서 스프링과 스프링 부트의 차이점을 간략하게 요약하면, 스프링은 더 큰 유연성과 세밀한 제어를 제공하지만 설정이 복잡하며, 스프링 부트는 빠른 개발과 간편한 설정을 제공하지만 그에 따라 일부 세부적인 제어력이 제한될 수 있다고 할 수 있습니다.
스프링 MVC 구조 흐름
스프링과 스프링 부트 차이
스프링 어노테이션
스프링 프레임워크에서는 많은 어노테이션들이 제공되고, 이들은 코드에 메타데이터를 추가하여 해당 코드의 의미와 역할을 더 명확하게 표현하거나, 스프링 컨테이너가 자동으로 특정 작업을 수행하도록 지시하는 역할을 합니다. 아래는 스프링 프레임워크에서 주로 사용되는 몇 가지 어노테이션들에 대한 설명입니다:
이 외에도 스프링 프레임워크는 다양한 어노테이션을 제공하며, 이들은 각각 특정 상황에서 코드의 역할과 의미를 명확히 표현하거나, 스프링 컨테이너의 자동 처리를 지시하는 역할을 합니다. 따라서 각 어노테이션의 의미와 사용 방법을 이해하는 것은 스프링 프레임워크를 효과적으로 사용하는 데 중요합니다.
스프링 버전별 기능
MVC 1과 MVC 2의 차이
ORM
JPA
ORM, JPA, Hibernate 장단점
Mybatis란?
Mybatis, JPA 차이
IoC란?
IoC(Inversion of Control)는 프로그램의 제어 흐름 구조가 뒤바뀌는 것을 의미하는 소프트웨어 디자인 원칙입니다. 전통적인 프로그래밍에서는 메인 프로그램이 프로그램의 흐름을 제어하고, 필요에 따라 메소드를 호출하거나 객체를 생성하는 등의 작업을 합니다. 하지만 IoC를 적용하면 이러한 제어 흐름이 '프레임워크' 또는 '컨테이너'로 이동하고, 개발자가 작성한 코드는 이러한 흐름에 의해 호출되는 구조가 됩니다.
스프링 프레임워크에서 IoC는 주로 'Dependency Injection'(DI)이라는 형태로 구현됩니다. 스프링 컨테이너는 객체의 생명 주기를 관리하며, 객체 간의 의존성을 자동으로 주입합니다.
예를 들어, 어떤 클래스가 다른 클래스의 인스턴스를 필요로 할 때, 전통적인 방식에서는 이 클래스 내부에서 필요한 클래스의 인스턴스를 직접 생성합니다. 하지만 IoC와 DI를 사용하면, 이러한 인스턴스 생성과 연결을 스프링 컨테이너가 대신 해주게 됩니다.
이러한 접근 방식은 다음과 같은 이점을 제공합니다:
따라서 스프링 프레임워크에서의 IoC는 개발자가 객체 생성과 관리에 대한 부담을 줄이고, 좀 더 집중적으로 비즈니스 로직에 신경 쓸 수 있도록 돕습니다.
Spring JDBC
DAO, DTO 란?