패스트캠퍼스 챌린지

패스트캠퍼스 환급 챌린지 11일차 : 9개 도메인 프로젝트로 끝내는 백엔드 웹 개발 (Java/Spring) 초격차 패키지 Online 강의 후기

ssoonearth 2025. 4. 11. 23:11

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

https://abit.ly/lisbva

 

 

 

 

패스트캠퍼스의 '9개 도메인 프로젝트로 끝내는 백엔드 웹 개발 (Java/Spring) 초격차 패키지 Online' 강의 수강 11일차!
오늘은 Spring의 개념에 대한 학습을 진행하였다.

 

Spring에는 인스턴스가 한 개만 생성되는 것을 보장하는 디자인 패턴인 싱글톤 패턴 이 적용되어 있는데, 이는 이미 만들어졌던 객체를 효율적으로 계속해서 활용하기 때문에 웹 요청과 같이 여러 요청이 올 때 효과적으로 대응이 가능하다.

 

Spring Container란 스프링에서 제공하는 객체 저장소로, 싱글톤 패턴이 적용되어 있다.

Bean 은 스프링 컨테이너에서 관리되는 객체이다.

Spring은 ComponentScan으로 Bean 객체가 될 것들을 찾고. 스프링 컨테이너가 알맞은 Bena 객체를 의존성에 맞게 주입해준다. 이를 DI (Dependency Injection, 의존성 주입) 이라 한다.

스프링을 적용시키지 않은 경우에는 개발자가 직접 객체를 생성하고 주입해야 하지만, 스프링을 적용시키면 알아서 처리해준다. 이를 IoC (Inversion of Control, 제어의 역전) 이라 한다.

/* Spring을 적용시키지 않은 경우
- 고수준에서 저수준 컴포넌트를 의존하게 되므로, 클린 아키텍처에 위배된다 */

public class UserService {
    private final UserRepository = new UserRepository();
}
/* Spring을 적용시킨 경우
- 스프링이 알아서 객체를 주입하기 때문에 클린 아키텍처가 잘 유지된다 */

@Service
public class UserService {
    private final UserRepository userRepository;

    // Constructor
}

 

 

 

과제로 내주신 질문들에 대한 답변을 적어보겠다.

Q. 싱글톤 패턴 외에 스프링에 적용된 디자인 패턴에 대해 찾아보세요.

 

1. 팩토리 메소드 패턴

- 객체를 생성하는 일을 자식 클래스에 맡기는 패턴으로, new로 직접 객체를 만들지 않고 팩토리 메소드를 통해 객체를 생성한다.

- Spring의 ApplicationContextBeanFactory를 상속하기 때문에, ApplicationContext 객체의 getBean() 팩토리 메소드를 사용하여 bean을 주입받을 수 있다.

 

2. 프록시 패턴

- 어떤 객체에 대한 접근을 제어하기 위해 그 객체를 대리하는 프록시 객체를 사용하는 패턴.

- Spring에서 @Transactional 이 붙은 메소드를 호출할 때, 실제로는 그 메소드를 프록시 객체가 대신 호출한다.

 

3. 템플릿 메소드 패턴

- 알고리즘의 뼈대를 상위 클래스에 정의하고, 세부 구현은 하위 클래스에 맡기는 디자인 패턴.

- Spring에서 Http 요청에 대해 처리하는 DispatcherServlet은 FrameworkServlet을 상속받는데, FrameworkServlet의 processRequest() 템플릿 메소드 내부에는 doService() 가 추상 메소드로 구현되어 있다.