1. Spring Framework의 핵심 개념은 무엇인가요?
답변: Spring Framework의 핵심 개념은 IoC(Inversion of Control)와 DI(Dependency Injection)입니다. IoC는 객체의 생성과 관리를 개발자가 아닌 Spring 컨테이너가 담당하는 것을 의미합니다. 이를 통해 객체 간의 결합도를 낮추고, 코드의 재사용성과 테스트 용이성을 높일 수 있습니다. DI는 필요한 객체를 외부에서 주입받아 사용하는 방식으로, 코드의 유연성과 유지보수성을 향상시킵니다.
연관 질문: IoC와 DI의 차이점에 대해 설명해보세요.
2. Spring Boot란 무엇이며, 어떤 장점이 있나요?
답변: Spring Boot는 Spring Framework 기반 애플리케이션 개발을 간소화하기 위해 제공되는 프로젝트입니다. Spring Boot는 다양한 설정을 자동화하고, 내장된 웹 서버를 제공하여 별도의 설정 없이 빠르게 애플리케이션을 시작할 수 있습니다. 이를 통해 개발자는 애플리케이션 로직에 집중할 수 있으며, 프로젝트의 초기 설정과 구성을 크게 단축할 수 있습니다.
연관 질문: Spring Boot의 자동 설정(Auto Configuration) 기능은 어떻게 동작하나요?
3. Spring에서 AOP(Aspect-Oriented Programming)가 무엇인가요?
답변: AOP는 횡단 관심사(Cross-Cutting Concerns)를 모듈화하여 코드의 중복을 줄이고, 코드의 가독성과 유지보수성을 높이는 프로그래밍 패러다임입니다. Spring에서는 AOP를 통해 로깅, 보안, 트랜잭션 관리와 같은 횡단 관심사를 별도의 모듈로 분리할 수 있습니다. 이로 인해 비즈니스 로직과 기타 관심사가 명확하게 분리되어 더 깨끗한 코드베이스를 유지할 수 있습니다.
연관 질문: AOP에서 사용되는 주요 용어(Advice, Pointcut, Aspect)에 대해 설명해보세요.
4. Spring의 트랜잭션 관리(Transaction Management)는 어떻게 이루어지나요?
답변: Spring은 선언적 트랜잭션 관리와 프로그래매틱 트랜잭션 관리를 모두 지원합니다. 선언적 트랜잭션 관리는 @Transactional 애너테이션을 통해 간단하게 트랜잭션을 처리할 수 있으며, AOP를 사용하여 트랜잭션의 시작과 종료를 제어합니다. 이를 통해 개발자는 비즈니스 로직에만 집중할 수 있고, 트랜잭션 관리의 복잡성을 줄일 수 있습니다.
연관 질문: @Transactional 애너테이션의 속성에 대해 설명해보세요.
5. Spring에서 빈(Bean)이란 무엇인가요?
답변: Spring에서 빈은 Spring IoC 컨테이너가 관리하는 객체를 의미합니다. 빈은 애플리케이션의 구성 요소로, 컨테이너에 의해 생성되고, 의존성이 주입되며, 생명주기가 관리됩니다. 빈은 XML, Java Config, 또는 애너테이션 기반으로 정의될 수 있으며, Spring 컨테이너가 이를 관리하여 DI를 구현합니다.
연관 질문: 빈의 스코프(scope)와 라이프사이클에 대해 설명해보세요.
6. Spring에서 RESTful 웹 서비스를 어떻게 구현하나요?
답변: Spring에서는 @RestController 애너테이션을 사용하여 RESTful 웹 서비스를 쉽게 구현할 수 있습니다. @RequestMapping 또는 그 축약형 애너테이션들을 사용해 특정 URL 패턴에 대한 요청을 처리할 수 있습니다. Spring은 HTTP 메시지 컨버터를 통해 JSON, XML 등의 데이터 포맷을 자동으로 변환해 클라이언트와 통신합니다. 이를 통해 RESTful 아키텍처를 따르는 API를 간단하게 구축할 수 있습니다.
연관 질문: @RestController와 @Controller의 차이점에 대해 설명해보세요.
7. Spring Security란 무엇이며, 어떻게 사용되나요?
답변: Spring Security는 Spring 기반 애플리케이션의 보안을 담당하는 강력한 프레임워크입니다. 인증(Authentication)과 인가(Authorization)를 쉽게 구현할 수 있도록 도와주며, 다양한 보안 기능을 제공합니다. 기본적으로 폼 기반 로그인, 세션 관리, CSRF 보호, 역할 기반 접근 제어 등을 지원하며, 확장성과 커스터마이징이 용이합니다.
연관 질문: Spring Security에서 JWT(JSON Web Token)를 사용하는 방법에 대해 설명해보세요.
8. Spring에서 JPA(Java Persistence API)를 사용하는 이유는 무엇인가요?
답변: Spring에서 JPA는 데이터베이스와 객체 간의 매핑을 간편하게 처리하기 위해 사용됩니다. JPA를 사용하면 데이터베이스 연동 코드의 양을 줄이고, ORM(Object-Relational Mapping)을 통해 객체 모델과 관계형 데이터베이스의 간극을 메울 수 있습니다. 이를 통해 비즈니스 로직과 데이터 액세스 로직을 명확히 분리할 수 있으며, 유지보수성을 높일 수 있습니다.
연관 질문: Spring Data JPA의 장점과 주요 기능에 대해 설명해보세요.
9. Spring Cloud란 무엇이며, 어떤 용도로 사용되나요?
답변: Spring Cloud는 분산 시스템의 복잡성을 관리하고 마이크로서비스 아키텍처를 지원하기 위해 제공되는 Spring 프로젝트입니다. Spring Cloud는 서비스 디스커버리, 분산 설정 관리, 로드 밸런싱, 장애 복구, API 게이트웨이 등 마이크로서비스 아키텍처에서 필요한 다양한 기능을 제공합니다. 이를 통해 마이크로서비스 간의 통신을 쉽게 관리하고, 확장 가능한 애플리케이션을 구축할 수 있습니다.
연관 질문: Spring Cloud Netflix 프로젝트에 대해 설명해보세요.
10. Spring에서 Bean Validation은 어떻게 구현하나요?
답변: Spring에서는 JSR-303/JSR-380 표준인 Bean Validation API를 사용하여 객체의 유효성을 검사할 수 있습니다. @Valid 또는 @Validated 애너테이션을 사용해 DTO나 엔티티 클래스의 필드를 검증할 수 있으며, Hibernate Validator와 같은 구현체를 통해 다양한 검증 규칙을 적용할 수 있습니다. 이를 통해 입력 데이터의 유효성을 간단하게 검사하고, 검증 오류 메시지를 클라이언트에 전달할 수 있습니다.
연관 질문: 커스텀 Validator를 구현하는 방법에 대해 설명해보세요.
'Backend' 카테고리의 다른 글
대용량 트래픽에서 장애가 발생하면 어떻게 대응할 것인가요? (0) | 2024.09.01 |
---|---|
브라우저에서 구글에 접속했을때 일어나는 일? (0) | 2024.09.01 |
AOP(Aspect-Oriented Programming)이란 무엇이며, 스프링에서 AOP를 어떻게 활용할 수 있는가? (0) | 2024.08.15 |
스프링의 의존성 주입(Dependency Injection)이란 무엇이며, 어떤 방식으로 구현할 수 있는가? (0) | 2024.08.15 |
스프링 빈(BEAN)이란 무엇이며, 컨테이너는 어떻게 빈을 관리하는가? (0) | 2024.08.15 |