스프링 정리2 (보충)

김종조·2025년 2월 13일
post-thumbnail

1. Spring Framework 기본

- spring Framework의 핵심 개념

Spring Framework응 객체의 생성과 관리(IoC), 의존성 주입(DI), 트랜잭션 관리, AOP, MVC웹 개발, 데이터 접근 등을 지원하는 자바 기반의 애플리케이션 프레임워크이다.

- IoC와 DI의 차이점

IoD는 객체의 생성 및 생명주기 관리를 개발자가 아닌 Spring Container가 담당하는 것
DI는 IoC의 한 형태로, 객체 간의 의존성을 Container가 자동으로 주입해 주는 방식

- Spring Bean이란?, Bean 생명주기

Spring Bean : Spring IoC 컨테이너에서 관리되는 객체를 의미
Bean의 생명 주기
1. 객체 생성 (Bean 등록)
2. 의존성 주입
3. 초기화
4. 사용
5. 소멸

2. Spring Boot

- Spring Boot와 Spring Framework의 차이점

Spring Boot는 Spring 설정을 자동화하여 빠르게 개발할 수 있도록 도와주는 프레임 워크이다.
차이점
1. 내장 Tomcat 지원 (was)
2. 의존성 관리
3. 자동 설정

- Spring Boot의 AutoConfiguration 원리

Spring Boot는 클래스패스를 스캔하고, 필요한 Bean을 자동으로 등록해준다.

- Spring Boot에서 @SpringBootApplication 어노테이션

3개의 어노테이션을 포함하는 메타 어노테이션이다.

  • @SpringBootConfiguration -> 설정 파일 역할
  • @EnableAutoConfiguration -> 자동 설정 활성화
  • @ComponentSacn -> 패키지 내 Bean 자동 스캔

3. Spring MVC

- Spring MVC의 동작

  1. 사용자가 요청을 보낸다.
  2. DispatcherServlet이 요청을 받는다.
  3. 적절한 Controller를 찾는다 (@Controller)
  4. Controller가 Service를 호출 -> Service가 Repository 호출 -> DB 접근
  5. 처리된 데이터를 Model에 담아 View 반환 (ModelAndView)
  6. ViewResolver가 알맞은 뷰를 찾는다.
  7. 클라이언트에게 응답 반환

- DispatcherServlet의 역할

Spring MVC의 프론트 컨트롤러로 들어오는 모든 요ㅕ청을 받고 처리한다.
요청을 받아 적절한 컨트롤러로 전달하고, 응답을 다시 반환한다.

- @Controller와 @RestController의 차이점

@Controller는 View를 반환하고
@RestController는 JSON 데이터를 반환한다.
@RestController = @Controller + @ResponseBody

4. Spring Data JPA

- Spring Data JPA의 장점, 동작 원리

SQL을 직접 작성할 필요가 없다.(메서드명만으로 쿼리 실행 가능)
동작 원리
1. Respository 인터페이스 생성(JpaRepository)
2. Spring Data JPA가 구현체를 자동 생성
3. 실행 시 EntityManager가 동작하여 SQL 실행

- N+1 문제

N + 1 : 1개의 쿼리로 N개의 데이터를 가져왔지만, 각 데이터마다 추가 쿼리가 발생하는 문제
해결 방법

  • @EntityGraph
  • @Fetch(FetchType.LAZY)
  • JOIN FETCH

5. Spring Security

- Spring Security의 인증과 인가의 차이점

인증(Authentication) : 사용자 신원을 확인하는 과정(로그인)
인가(Authorization) : 권한을 검증하는 과정

- JWT를 이용한 인증방식 설명

  1. 사용자가 로그인 하면 JWT 토큰을 발급한다.
  2. 클라이언트는 요청 시 JWT를 포함해서 보낸다.
  3. 서버는 JWT를 검증하고 사용자 정보를 확인한다.

- CSRF 보호란 무엇인가

CSRF(Corss-Site Request Forgery) : 악의적인 요청을 사용하여 사용자를 속이는 공격
방어
.csrf().disable()로 비활성화가 가능하다.

6. Spring AOP

- AOP가 무엇이며 어떤 경우에 사용

AOP(Aspect-Oriented Programming) : 공통 관심사를 분리하여 관리하는 방식

  • 로깅
  • 트랜잭션 관리
  • 보안 처리

- Spring 에서 AOP를 구현하는 방법

  1. 의존성 추가(spring-boot-starter-aop)
  2. Aspect 클래스 작성 : @Aspect 어노테이션을 사용해서 AOP 클래스를 정의한다.
  3. Aspect 적용 : @Before, @After, @Around 등의 어노테이션을 사용하여 적용한다.

7. 트랜잭션 관리

- @Transactional 어노테이션을 사용할 때 주의할 점

  1. 메서드가 public 이어야 적용된다.
  2. 프록시 기반이라 같은 클래스 내에서 호출하면 적용이 안된다.
  3. RuntimeException 발생 시 롤백된다.
profile
웹 개발 공부 기록

0개의 댓글