본문 바로가기

스프링13

[Spring] 서블릿, HttpServletRequest, HttpServletResponse 1. 개요 이번 게시물에서는 실제로 서블릿을 사용해 볼 것이다. 서블릿에 대한 설명은 아래 게시물을 참고해보자. (서블릿에 대한 설명) 2. 서블릿 사용하기 서블릿을 사용하려면 웹 애플리케이션 서버를 직접 설치하고, 서블릿 코드를 클래스 파일로 빌드한 후, 톰캣 서버를 실행해야 한다. 이는 매우 번거럽기 때문에 톰캣 서버를 내장하고 있는 스프링 부트를 사용하면 된다. (사실 이제는 스프링 MVC 패턴을 주로 사용, 서블릿 동작 원리만 확인해 보기 위함이기 때문) - 스브링 부트 서블릿 환경 구성 @ServletComponentScan //서블릿 자동 등록 @SpringBootApplication public class ServletApplication { public static void main(Str.. 2023. 1. 17.
[Spring] 빈 스코프 (@Scope) 0. 개요 이번 게시물에서는 스프링 스코프에 대해 작성할 것이다. 해당 게시물을 보기 전, 아래 링크의 글을 보고 오는 것을 추천한다. (스프링 빈과 스프링 컨테이너) 1. 빈 스코프란? 모든 설명에 나오는 예시 프로젝트의 설계 방식은 아래 링크를 참고 https://imgzon.tistory.com/114 빈 스코프란 빈이 존재할 수 있는 범위를 뜻한다. 스프링은 다음과 같은 다양한 스코프를 지원한다. - 싱글톤: 기본 스코프(default), 스프링 컨테이너의 시작과 끝을 함께하는 가장 넓은 범위의 스코프이다. - 프로토타입: 프로토타입 빈의 생성과 의존관계 주입까지만 스프링 컨테이너가 관여하고, 그 이후로는 관리하지 않는 매우 짧은 범위의 스코프이다. - 웹 관련 스코프 - request: 웹 요청.. 2023. 1. 10.
[Spring] 스프링 빈 생명주기 0. 개요 이번 게시물에서는 스프링 빈의 생명주기에 대해 작성할 것이다. 해당 게시물을 보기 전, 아래 링크의 글을 보고 오는 것을 추천한다. (스프링 빈과 스프링 컨테이너) 1. 스프링 빈 생명 주기 모든 설명에 나오는 예시 프로젝트의 설계 방식은 아래 링크를 참고 https://imgzon.tistory.com/114 개발자가 스프링 빈을 사용하기 위해서는 스브링 빈 객체가 생성되고, 의존관계가 주입된 후이다. 따라서 스프링에서는 스프링 빈에게 콜백 메서드를 통해서 초기화 시점을 알려주는 다양한 기능을 제공한다. 따라서 스프링 빈의 라이프사이클을 정리해보면, 스프링 컨테이너 생성 -> 스프링 빈 생성 -> 의존관계 주입 -> 초기화 콜백 -> 사용 -> 소멸전 콜백 -> 스프링 종료 - 초기화 콜백:.. 2023. 1. 10.
[Spring] 스프링 빈 조회 0. 개요 이번 게시물에서는 스프링 빈을 조회하는 법에 대해 작성할 것이다. 해당 게시물을 보기 전, 아래 링크의 글을 보고 오는 것을 추천한다. (스프링 빈과 스프링 컨테이너) 1. 빈 등록 모든 설명에 나오는 예시 프로젝트의 설계 방식은 아래 링크를 참고 https://imgzon.tistory.com/114 이번 게시물에서 조회 할 빈은 아래 게시물에서 자바 코드로 등록한 빈들이다. (스프링 빈 자바 코드로 수동 등록) 2. 스프링 컨테이너에 등록된 모든 빈 조회 class ApplicationContextInfoTest { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); @.. 2023. 1. 10.
[Spring] 싱글톤 패턴, 스프링 컨테이너, @Configuration 0. 개요 이번 게시물에서는 싱글톤, 스프링 컨테이너, @Configuration의 효과에 대해 작성할 것이다. 해당 게시물을 보기 전, 아래 링크의 글을 보고 오는 것을 추천한다. (스프링 빈과 스프링 컨테이너) 1. 싱글톤 패턴이 왜 필요할까? 모든 설명에 나오는 예시 프로젝트의 설계 방식은 아래 링크를 참고 https://imgzon.tistory.com/114 스프링은 기본적으로 온라인, 그중에서도 웹 애플리케이션을 개발하기 위해 탄생하였다.(물론, 웹이 아닌 애플리케이션 개발도 가능은 하다) 일반적인 웹 애플리케이션이라면, 보통 여러 고객들이 동시에 요청을 한다. 이때, 스프링을 적용하지 않은 순수한 DI 컨테이너로 작성한 경우, 요청을 받을때마다 객체를 새로 생성한다. -> 만일 요청이 1초에.. 2023. 1. 10.
[Spring] 컴포넌트 스캔(@ComponentScan), 의존관계 자동 주입, 롬복(lombok) 0. 개요 이번 게시물에서는 스프링 컨테이너에 스프링 빈을 컴포넌트 스캔으로 추가하는 방법에 대해 작성할 것이다. 해당 게시물을 보기 전, 아래 링크의 글을 보고 오는 것을 추천한다. (스프링 빈과 스프링 컨테이너) (스프링 빈 자바코드로 수동 등록) 1. 자바 코드로 수동 등록의 한계 모든 설명에 나오는 예시 프로젝트의 설계 방식은 아래 링크를 참고 https://imgzon.tistory.com/114 스프링 컨테이너를 @Bean을 통해서 수동 등록할 경우, 예제와 같이 3~4개정도면 충분히 작성 할 수 있다. 하지만 빈이 수백개가 된다면? 설정 정보 클래스도 커지고, 누락하는 문제도 발생할 수 있다. 그래서 스프링은 @ComponentScan을 통해 자동으로 스프링 빈을 등록하고, @Autowire.. 2023. 1. 10.
[Spring] 스프링 빈 자바 코드로 수동 등록(@Configuration, ApplicationContext) 0. 개요 이번 게시물에서는 스프링 컨테이너에 스프링 빈을 자바 코드(직접 만든 DI 컨테이너)로 추가하는 방법에 대해 작성할 것이다. 해당 게시물을 보기 전, 아래 링크의 글을 보고 오는 것을 추천한다. (스프링 빈과 스프링 컨테이너) 1. AppConfig 스프링 기반 변경 모든 설명에 나오는 예시 프로젝트의 설계 방식은 아래 링크를 참고 https://imgzon.tistory.com/114 우선 예시 프로젝트에서 사용할 DI 컨테이너를 작성해보자. public class AppConfig { public MemberService memberService() { return new MemberServiceImpl(memberRepository()); } public OrderService order.. 2023. 1. 9.
[Spring] 스프링 빈과 스프링 컨테이너 0. 스프링 부트로 처음 접하면.. 스프링 부트로 스프링 개발을 처음 접하게 되면, 스프링 빈이라는 개념을 인지하지 못한체 개발을 시작하게 될 것이다. 책, 혹은 구글링한 코드를 보며 @SpringBootApplication, @RequiredArgsConstructor, @Controller, @Service와 같은 어노테이션을 쓰기만 해도 프로젝트가 정상적으로 작동하기 때문이다! 하지만 개발을 해보다 보면 "그래서 이게 어떤 원리로 작동하는 거지?", "이 어노테이션은 왜 붙이는거지?" 와 같은 궁금증이 생기게 된다. "@RequiredArgsConstructor가 final 혹은 @NotNull이 붙은 생성자를 생성해주는 건 알겠는데, 생성자가 왜 필요하지?" 같은 고민들을 해결하기 위해서는 우선 .. 2023. 1. 9.