⏰ 2024. 05. 23 목
✔ 스프링 이론 강의를 듣고 정리하면서 작성했습니다.
💡 목차
- Bean 수동 등록
- 인증과 인가
- 쿠키와 세션
Bean 수동 등록
⚡ Bean
- Spring이 관리하는 객체로, 의존성 주입이 필요한 클래스(인터페이스 포함)를 Bean으로 등록해 Spring에 의해 의존성이 주입된다.
Bean 수동 등록
- 클래스에
@Component
사용하면 @ComponentScan
에 의해 자동으로 스캔되어 Bean으로 등록되고, 일반적으로는 자동으로 등록하는 것이 좋다.
- Bean의 수동 등록은 기술적인 문제나 공통적인 관심사를 처리할 때 사용하는 객체들을 수동으로 등록한다.
- 수동으로 등록하는
기술 지원 Bean
: 비즈니스 로직을 지원하기 위한 부가적이고 공통적인 기능들을 지원하는 객체
수동 등록 장점
- 수동 등록된 Bean에서 문제가 발생했을 때, 해당 위치를 파악하기 쉽다.
Bean 수동 등록 방법
- Bean으로 등록하고자 하는 객체를 반환하는 메서드를 선언하고
@Bean
설정
- 해당 메서드가 속한 클래스에
@Configuration
을 설정
- Spring 서버가 실행 될때, Srping IoC 컨테이너에
Bean
으로 등록
수동 등록 하려는 Bean이 같은 타입으로 2개라면?
⚡ 인터페이스를 2개의 객체로 구현하고 Bean으로 등록하면 인터페이스 타입의 2가지 객체가 Bean으로 의존성을 주입받아야하는데, 이를 구별하기 위한 방법이 필요하다!
- 등록된 Bean 이름 명시하기
- 사용하는 부분에 필드명을 구현체의 이름으로 선언한다.
⚡ @Autowired
은 Bean의 일반적으로 타입으로 DI를 지원하지만, 연결되지 않을 경우 Bean Name(필드명)으로 구별한다는 것을 알 수 있다.
@Primary
사용하기
- 구현체들 중에 하나의 클래스에
@Primary
을 추가한다.
- 같은 타입의 Bean이 여러개 있더라도
@Primary
가 설정된 Bean 객체를 주입한다.
@Qualifier(bean)
사용하기
- 구현체들 중에 하나의 클래스에
@Qualifier(bean)
를 설정
- 주입하고자 하는 필드에도
@Qualifier(bean)
를 추가해주면 해당 Bean 객체가 주입된다.
⚡ @Primary
와 @Qualifier(bean)
가 동시에 적용되면 @Qualifier(bean)
의 우선순위가 더 높다.
인증과 인가
인증(Authentication)
- 인증은 해당 유저가 실제 유저인지 인증하는 개념이고, 실제 그 유저가 맞는지 확인하는 절차이다.
인가(Authorization)
- 인가는 해당 유저가 특정 리소스에
접근
이 가능한지 허가(권한)를 확인하는 개념이다.
⚡ 회원을 로그인하는 과정은 "인증"이고, 회원과 비회원에 따라 접근할 수 있는 권한을 받는 것이 "인가"이다.
인증의 방식 2가지 ⬇
쿠키와 세션
쿠키-세션
- 쿠키와 세션 모두 HTTP에 상태 정보를 유지하기 위해 사용되고, 쿠키와 세션을 통해 서버는 클라이언트를 인증 및 인가 할 수 있게 된다.
쿠키
- 클라이언트에 저장될 목적으로 생성한 작은 정보를 담은 파일이다.
- 구성요소 : Name(이름), Value(값), Domin(도메인), Path(경로), Expires(만료기한)
세션
- 서버에서 일정시간 동안 클라이언트 상태를 유지하기 위해 사용된다.
- 서버에 클라이언트 별로 유일한
세션ID
를 부여한 후, 클라이언트 별 필요한 정보를 서버에 저장한다.
- 서버에 생성한
세션ID
는 클라이언트의 쿠키값(세션 쿠키)으로 저장되어 클라이언트 식별에 사용된다.
쿠키와 세션의 차이