반응형
Spring은 Java 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크이며, 다양한 기능과 모듈을 제공하여 개발자가 보다 쉽게 빠르게 개발을 할 수 있도록 도와줍니다. Spring과 관련된 면접 시험에 나올 수 있는 개념들은 다음과 같습니다.
Inversion of Control (IoC)
- IoC는 객체 지향 프로그래밍에서 객체 간의 의존성을 느슨하게 만들어줌으로써 유연한 코드를 작성할 수 있게 해줍니다.
- Spring에서는 IoC를 위해 BeanFactory와 ApplicationContext를 제공합니다.
Dependency Injection (DI)
- DI는 객체가 필요로 하는 의존 객체를 외부에서 주입받도록 하는 것입니다.
- Spring에서는 DI를 위해 @Autowired, @Inject, @Resource 등의 어노테이션을 제공합니다.
Aspect-Oriented Programming (AOP)
- AOP는 코드의 횡단 관심사(Cross-cutting concern)를 분리하여 코드 중복을 방지하고 유지 보수성을 높이는 기술입니다.
- Spring에서는 AOP를 지원하기 위해 @Aspect, @Before, @After, @Around 등의 어노테이션을 제공합니다.
Spring MVC
- Spring MVC는 웹 애플리케이션을 개발하기 위한 프레임워크입니다.
- Spring MVC는 Model-View-Controller(MVC) 패턴을 기반으로 하며, DispatcherServlet, HandlerMapping, ViewResolver 등의 핵심 컴포넌트를 제공합니다.
- Controller: 클라이언트의 요청을 처리하고, 응답을 생성하는 역할을 합니다.
- Model: 비즈니스 로직과 데이터를 담당합니다.
- View: 클라이언트에게 보여지는 화면을 생성합니다.
- DispatcherServlet: 모든 클라이언트 요청을 받아, 적절한 Controller로 분배합니다.
Spring Boot
- Spring Boot는 Spring 기반의 애플리케이션을 보다 쉽게 빠르게 개발할 수 있도록 도와주는 도구입니다.
- Spring Boot는 자동 설정, 내장형 서버, 스타터 등의 기능을 제공합니다.
Spring Data JPA
- Spring Data JPA는 JPA를 기반으로 하여 데이터베이스와 상호작용하기 위한 라이브러리입니다.
- Spring Data JPA는 Repository 인터페이스를 사용하여 데이터베이스와의 상호작용을 쉽게 할 수 있도록 지원합니다.
Spring Security
- Spring Security는 웹 애플리케이션의 보안을 강화하기 위한 프레임워크입니다.
- Spring Security는 인증(Authentication)과 권한 부여(Authorization)를 지원하며, 다양한 인증 방식과 보안 기능을 제공합니다.
728x90
Spring Batch
- Spring Batch는 대용량 데이터를 처리하기 위한 프레임워크입니다.
- Spring Batch는 일괄 처리(Batch Processing)를 위한 다양한 기능을 제공하며, Job, Step, Reader, Processor, Writer 등의 개념이 있습니다.
Spring Integration
- Spring Integration은 시스템 간의 데이터 통합을 위한 프레임워크입니다.
- Spring Integration은 다양한 메시징 패턴과 프로토콜을 지원하며, 다양한 어댑터와 게이트웨이를 제공합니다.
Spring WebFlux
- Spring WebFlux는 Reactive Programming을 지원하는 웹 프레임워크입니다.
- Spring WebFlux는 비동기 방식으로 HTTP 요청과 응답을 처리할 수 있으며, Reactive Streams API를 사용하여 데이터 스트림을 처리할 수 있습니다.
Spring Cloud
- Spring Cloud는 분산 시스템을 구축하기 위한 프레임워크입니다.
- Spring Cloud는 Config Server, Eureka, Zuul, Hystrix 등의 다양한 기능을 제공하여 서비스 디스커버리, 로드 밸런싱, 회로 차단, 설정 관리 등의 분산 시스템 개발을 지원합니다.
Spring Testing
- Spring Testing은 Spring 기반 애플리케이션을 테스트하기 위한 다양한 기능을 제공합니다.
- Spring Testing은 JUnit, Mockito, TestNG 등의 테스트 프레임워크와 함께 사용하여 단위 테스트, 통합 테스트, 모의 객체(Mock Object) 테스트 등을 지원합니다.
Spring Security
- Spring Security는 인증과 권한 부여를 처리하는 보안 프레임워크입니다.
- Spring Security는 다양한 인증 방식을 제공하며, 보안 설정을 유연하게 구성할 수 있습니다.
Spring Data
- Spring Data는 데이터 액세스 레이어를 단순화하는 프레임워크입니다.
- Spring Data는 JPA, MongoDB, Redis 등 다양한 데이터베이스와 연동할 수 있으며, 데이터 액세스 기능을 추상화하여 일관성 있는 인터페이스를 제공합니다.
Spring MVC
- Spring MVC는 웹 애플리케이션을 개발하기 위한 프레임워크입니다.
- Spring MVC는 모델(Model), 뷰(View), 컨트롤러(Controller) 패턴을 기반으로 구성되며, HTTP 요청과 응답 처리를 담당합니다.
Spring Boot
- Spring Boot는 Spring 애플리케이션을 빠르고 쉽게 구축할 수 있는 프레임워크입니다.
- Spring Boot는 자동 설정(Auto Configuration) 기능을 제공하며, 설정 없이 간단한 애플리케이션을 빠르게 개발할 수 있습니다.
Spring Framework의 핵심 개념
- Inversion of Control(IoC): 객체의 생성, 관리를 프레임워크가 담당하는 개념입니다.
- Dependency Injection(DI): 객체 간의 의존성을 주입하는 개념입니다.
- Aspect-Oriented Programming(AOP): 공통적인 기능을 모듈화하여 코드 중복을 줄이는 개념입니다.
Spring의 구성 요소
- Bean: Spring에서 IoC에 의해 관리되는 객체를 의미합니다. Bean은 Spring Container에서 생성, 관리되며, DI를 통해 의존성 주입이 이루어집니다.
- Container: Bean을 관리하는 Spring의 핵심 컴포넌트입니다. Bean의 생성, DI, 생명주기 관리 등을 담당합니다.
- ApplicationContext: Spring Container의 구현체 중 하나로, 빈의 생성과 관리, 환경 설정, 이벤트 처리 등의 기능을 제공합니다.
- AOP Alliance: AOP Alliance는 AOP 표준 인터페이스를 제공합니다. Spring은 AOP Alliance를 지원하여, Spring에서 AOP를 적용할 때 다양한 AOP 프레임워크를 사용할 수 있습니다.
Spring의 DI 방식
- Constructor Injection: 생성자를 통해 의존성을 주입하는 방식입니다.
- Setter Injection: Setter 메소드를 통해 의존성을 주입하는 방식입니다.
- Field Injection: 필드를 직접 주입하는 방식입니다.
Spring의 Scope
- Singleton: 애플리케이션 전체에서 단 하나의 인스턴스만을 생성합니다.
- Prototype: 요청할 때마다 새로운 인스턴스를 생성합니다.
- Request: HTTP 요청마다 새로운 인스턴스를 생성합니다.
- Session: HTTP 세션마다 새로운 인스턴스를 생성합니다.
Spring의 AOP
- Aspect: 공통적인 기능을 모듈화한 것으로, 핵심 비즈니스 로직과 분리하여 관리합니다.
- Join Point: Aspect가 적용될 수 있는 지점을 의미합니다.
- Pointcut: Join Point의 집합으로, Aspect가 적용될 메소드를 선택합니다.
- Advice: Aspect에서 수행할 작업을 정의합니다.
- Weaving: Aspect를 적용하는 과정을 의미합니다.
오늘의 블로그는 여기까지고요..
항상 믿고 봐주셔서 감사합니다.
300x250