Spring (183) 썸네일형 리스트형 [MVC] Java Servlet 이번 장에서는 Java Servlet에 대해서 알아본다. 글의 하단부에 참고한 강의와 공식문서의 경로를 첨부하였으므로 자세한 내용은 강의나 공식문서에서 확인한다. 모든 코드는 깃허브(링크)에 올려두었다. Java Servlet 이란? 자바 서블릿(Java Servlet)은 자바를 사용하여 웹페이지를 동적으로 생성하는 서버측 프로그램 혹은 그 사양을 말하며, 흔히 "서블릿"이라 불린다. 자바 서블릿은 웹 서버의 성능을 향상하기 위해 사용되는 자바 클래스의 일종이다 출처: 위키백과 Servlet 예제 페이지 서블릿의 작동 원리를 알아보기 위해서 간단한 기본 페이지를 작성해본다. 필자는 SpringBoot로 프로젝트를 생성하였지만 스프링 서블릿 기능만 사용하여 예제를 구성할 것이다. @SpringBootApp.. [Core] Web Scope 이번 장에서는 빈의 프로토타입 스코프(링크)에 이어 웹 스코프에 대해서 알아본다. 글의 하단부에 참고한 강의와 공식문서의 경로를 첨부하였으므로 자세한 사항은 강의나 공식문서에서 확인한다. 모든 코드는 깃허브 (링크)에 올려두었다. 웹 스코프 웹 스코프는 이름에서 알 수 있듯이 웹 환경에서만 동작한다. 웹 스코프는 프로토타입 스코프와는 다르게 해당 스코프의 종료시점까지 관리되기 때문에 소멸 메서드가 호출된다. 웹 스코프의 종류는 아래와 같다. request: HTTP요청이 들어와서 나갈 때까지 유지되는 스코프이며 요청마다 별도의 빈 객체가 생성되고 관리된다. session: HTTP의 Session과 동일한 생명주기를 갖는 스코프 application: 서블릿 컨텍스트와 동일한 생명주기를 갖는 스코프 we.. [Core] Prototype Scope 이번 장에서는 빈의 프로토타입 스코프에 대해서 알아본다. 글의 하단부에 참고한 강의와 공식문서의 경로를 첨부하였으므로 자세한 사항은 강의나 공식문서에서 확인한다. 모든 코드는 깃허브 (링크)에 올려두었다. 빈 스코프 우리는 지금까지 스프링이 실행되면서 DI 컨테이너가 실행되어 빈을 관리하고 DI 컨테이너가 종료되면서 빈이 사라지는 것을 확인하였다. 이것은 빈의 기본 스코프가 싱글톤 스코프로 생성되기 때문이다. 스코프는 빈이 존재할 수 있는 범위를 뜻한다. 싱글톤: 기본 스코프로 DI 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프. 프로토타입: 빈의 생성과 의존관계 주입까지 유지되는 스코프. 이외의 웹 관련 스코프는 다음 장에서 알아보도록 한다. 프로토타입 스코프 프로토타입 스코프의 경우 빈.. [Core] Bean Lifecycle 이번 장에서는 빈의 생명주기와 콜백에 대해서 알아본다. 글의 하단부에 참고한 강의와 공식문서의 경로를 첨부하였으므로 자세한 사항은 강의나 공식문서에서 확인한다. 모든 코드는 깃허브 (링크)에 올려두었다. 빈의 생명주기와 콜백 어플리케이션은 시작 시점과 종료 시점에 진행해야하는 작업들이 있다. 스프링 빈 또한 이러한 초기화 작업과 종료 작업이 필요하며 어떻게 사용하는지에 대해서 알아보도록 한다. 테스를 위해 데이터베이스 커넥션을 담당하는 DBConnectionService를 생성하였다. @Slf4j public class DBConnectionService { private String host; private String user; private String password; public DBConnec.. [Core] Specific Bean 이번 장에서는 다양한 의존관계 주입 방법(링크)에 이어 중복 빈 처리에 대해서 알아본다. 글의 하단부에 참고한 강의와 공식문서의 경로를 첨부하였으므로 자세한 사항은 강의나 공식문서에서 확인한다. 모든 코드는 깃허브 (링크)에 올려두었다. 조회 된 빈이 2개 이상인 경우 우리는 아래와 같이 DiscountPolicy를 구현한 두 개의 할인 정책이 있다. @Component public class FixedDiscountPolicy implements DiscountPolicy {} @Component public class RatioDiscountPolicy implements DiscountPolicy {} 이렇게 동일한 역할(Interface)을 구현한 구현체가 복수개인 상황에서 @Autowired를 .. [Core] Auto Dependency Injection 이번 장에서는 다양한 의존관계 주입 방법에 대해서 알아본다. 글의 하단부에 참고한 강의와 공식문서의 경로를 첨부하였으므로 자세한 사항은 강의나 공식문서에서 확인한다. 모든 코드는 깃허브 (링크)에 올려두었다. 의존관계 주입 방법 의존관계 주입(Dependency Injection)에는 크게 4가지 방법이 있다. 생성자 주입(Constructor Injection) 수정자 주입(Setter Injection) 필드 주입(Field Injection) 일반 메서드 주입 일반적인 상황이라면 생성자 주입을 사용해야하며 특별한 상황에만 수정자 주입을 사용해야한다. 필드 주입은 테스트 코드를 작성하는 경우에만 사용한다. 왜 이러한 결론을 내리게 되었는지 하나씩 알아보도록 한다. 생성자 주입(Constructor I.. [Core] Component Scan 이번 장에서는 @Configuration과 싱글톤(링크)에 이어 컴포넌트 스캔에 대해서 알아본다. 글의 하단부에 참고한 강의와 공식문서의 경로를 첨부하였으므로 자세한 사항은 강의나 공식문서에서 확인한다. 모든 코드는 깃허브 (링크)에 올려두었다. Component Scan 우리는 지금까지 DI 컨테이너에 빈을 등록할 때 자바 코드와 XML을 사용하여 빈을 등록하였다. 하지만 이러한 방식으로 빈을 등록하게 되는 경우 실무에서 쏟아져 나오는 수많은 클래스들을 관리하기란 쉽지 않고 손이 많이 간다. 스프링에서 이러한 문제를 인지하고 편리하게 빈을 등록할 수 있도록 컴포넌트 스캔(Component Scan)이라는 기능을 제공하였다. 새로운 구성 정보를 가지는 AutoSpringApplicationConfig파일.. [Core] @Configuration & Singleton 이번 장에서는 DI Container와 싱글톤(링크)에 이어 @Configuration과 싱글톤에 대해서 알아본다. 글의 하단부에 참고한 강의와 공식문서의 경로를 첨부하였으므로 자세한 사항은 강의나 공식문서에서 확인한다. 모든 코드는 깃허브 (링크)에 올려두었다. @Configuration @Configuration은 구성(설정) 파일을 위한 클래스에 사용되는 어노테이션이다. 정확히 어떠한 역할을 하는지 테스트를 통해서 알아보도록 한다. DI 컨테이너의 관리를 받는 SpringApplicationConfig 클래스를 확인해본다. @Configuration public class SpringApplicationConfig { @Bean public MemberService memberService() { .. 이전 1 ··· 13 14 15 16 17 18 19 ··· 23 다음