Spring 8

jsessionid

JSESSIONID 톰캣 컨테이너에서 세션을 유지하기 위해 발급하는 키 즉, 세션에서 사용되는 쿠키 이름이다. HTTP는 stateless하기 떄문에, 새로운 연결이 생성되면 이전 연결은 끊기기 때문에 상태를 유지할 수 없다. 상태를 저장하기 위해 톰캣은 JSESSIONID 쿠키를 클라이언트에게 발급해주고 이 값으로 세션을 유지할 수 있도록 한다. JSESSIONID 동작방식 브라우저 최초 접근 -> Tomcat은 Response 헤더에 JSESSIONID 값 발급 Set-Cookie: JSESSIONID=3CB361E0BE1A9A7DE7DB926DF0772BAE 브라우저 재 요청 시 Response를 통해 받은 JSESSIONID를 Request 헤더의 쿠키에 값을 넣어 서버에 요청. 쿠키를 통해 JS..

Spring 2023.06.07

[Spring] 의존관계 자동 주입(2/2) - @Autowired, @Qualifier, @Primary

의존성 주입을 위해 빈을 주입할 때 조회된 빈이 2개 이상일 경우가 있습니다. 다음과 같은 경우입니다. @Autowired는 빈의 타입으로 빈을 조회하는데, @Component public class FixDiscountPolicy implements Discountpolicy{} @Component public class RateDiscountPolicy implements DiscountPolicy {} 위와같이 DiscountPolicy 인터페이스를 FixDiscountPolicy와 RateDiscountPolicy가 구현하고 있을 경우 @Autowired private DiscountPolicy discountPolicy DiscountPolicy 타입으로 빈을 주입받으려고 하면 NoUniqueB..

[Spring] 의존관계 자동 주입 - 생성자 주입을 선택하자!

의존관계 의존관계 주입에는 크게 4가지가 있습니다. 생성자 주입 수정자 주입 필드 주입 일반 메서드 주입 생성자 주입 생성자 호출 시점에 1번만 호출되어 불변, 필수 의존관계에 사용됩니다. @Component public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autowired public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) { this.memberRepository = memb..

[Spring] 컴포넌트 스캔

스프링 빈을 등록할 때는 @Bean 어노테이션이나 XML의 태그를 통해 설정 정보에 직접 등록할 스프링 빈을 명시해주는 방법이 있는데요. 등록해야 할 빈이 많을 때는 일일이 등록하기에는 한계가 있고 누락문제도 발생할 수 있죠,, 그래서! 스프링은 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔 기능을 제공하고 있습니다. 또 의존관계도 자동으로 주입하는 @Autowired 기능도 제공합니다. @ComponentScan @Configuration @ComponentScan( excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Configuration.class), includeFilters = @Filt..

[Spring] 싱글톤 컨테이너

이 글은 김영한님의 스프링 핵심원리 기본편 강의를 보고 공부용도로 정리한 내용입니다.^&^ 스프링은 객체를 싱글톤으로 관리한다 스프링 컨테이너는 기본적으로 객체 인스턴스를 싱글톤(1개만 생성)으로 관리합니다. 이렇게 싱글톤 객체를 생성하고 관리하는 기능을 싱글론 레지스트리라 합니다. 스프링 컨테이너의 이런 기능 덕분에 싱글턴 패턴의 모든 단점을 해결하면서 객체를 싱글톤으로 유지할 수 있습니다. 스프링 빈으로 등록할 객체들을 @Bean 어노테이션을 이용하여 다음과 같이 명시할 수 있습니다. AppConfig.java @Configuration public class AppConfig { @Bean public MemberService memberService(){ System.out.println("cal..

프레임워크 vs 라이브러리

Framework 프레임워크는 뼈대나 기반구조를 뜻합니다. 제어의 역전 개념이 적용된 대표적인 기술입니다. 소프트웨어에서의 프레임워크는 '소프트웨어의 특정 문제를 해결하기 위해서 상호 협력하는 클래스와 인터페이스의 집합' 이라 할 수 있습니다 통합성, 일관성의 부족이 발생되는 문제를 해결할 방법중 하나라고 할 수 있습니다. 프로그래밍을 진행할 때 기본 구조를 제공해주기 때문에 프레임워크를 사용하는 프로그래머는 이 프레임워크의 뼈대 위에서 코드를 작성하여 프로그램을 개발하면됩니다. 프레임워크는 완성된 제품이 아닌 완성된 제품을 만들기 위해서 개발자를 도와주는 또는 기반이 되는 역할을 합니다. 프레임워크는 뼈대나 기반구조를 뜻하는데, Application 개발 시 필수적인 코드, 알고리즘, 데이터베이스 연동..

Spring 2021.05.29

스프링 VS 스프링부트

스프링에 대해 이야기 하기전에 프레임워크와 라이브러리에 대한 차이에대해 알아본다. 라이브러리 간단하게 특정 기능을 하는 코드 뭉치 개발자는 자기 코드에 라이브러리를 포함시키고 원하는 기능을 사용해서 개발을 할 수 있다. 프레임워크 라이브러리를 포함하는 개념이고 개발자가 만든 코드를 사용한다. 코드를 어떻게 실행하는지를 프로그래밍 방법을 제공한다.

Spring 2020.11.18