Bean 수동 등록
@Configuration과 @Bean으로 빈을 수동으로 등록할 수 있다.
기술적인 문제나 공통적인 관심사를 처리할 때 사용하는 객체들을 수동으로 등록할 때 사용한다.
공통로그처리나 비즈니스로직을 지원하는 부가적이고 공통적인 기능들을 기술 지원 Bean이라고 부른다.
수동등록된 Bean들은 스프링 서버가 뜰 때 Spring Ioc 컨테이너에 저장된다.
스프링이 관리하는 Bean은 생성자 주입으로 주입받아서 사용할 수 있다.
Bean으로 등록하지 않았다면 직접 new로 생성해줘야 하지만
Bean으로 관리한다면 기본적으로 싱글톤으로 생성되어
매번 new 하지 않고 재사용할 수 있다.
같은 타입의 Bean을 어떻게 구분하는가?
1. 선언시 Bean의 이름을 명시한다.
@SpringBootTest
public class BeanTest {
@Autowired
Food pizza;
@Autowired
Food chicken;
}
둘 다 Food라는 인터페이스를 타입으로 가진다.
2. @Primary로 기본적으로 사용하는 Bean을 지정해 준다.
@Component
@Primary
public class Chicken implements Food {
@Override
public void eat() {
System.out.println("치킨을 먹습니다.");
}
}
이제
@Autowired
Food food;
이렇게 선언해도 Pizzd와 Chicken 중 @Primary가 붙은 Chicken을 주입받는다.
3. @Qualifier로 사용할 빈을 명시한다.
@SpringBootTest
public class BeanTest {
@Autowired
@Qualifier("pizza")
Food food;
}
이러면 @Priamry가 설정된 Chicken보다 @Qualifer가 우선순위가 높기 때문에
pizza로 주입받아진다.
인증 / 인가
인증 - 해당 유저가 실제 유저인지 인증함
인가 - 특정 리소스에 접근이 가능한지 허가를 확인함
인증의 2가지 방법
공통점)
- 회원 DB를 조회해 사용자 확인
- 쿠키저장소 사용
1. 쿠키/세션 방식의 인증
- 세션 저장소를 사용,
- 세션 ID 발급
- 요청 시 세션 ID를 검사함
2. JWT 기반 인증
- 세션 저장소 x,
- JWT 토큰 발급
- 요청 시 헤더에 토큰을 포함시킴
쿠키와 세션이란?
쿠키와 세션 모두 HTTP에 상태 정보를 유지하기 위해 사용된다.
쿠키는 작은 정보파일
세션은 일정기간 동안 유지되는 세션 ID
둘 다 세션 저장소에 저장된다.
HttpServletRequest / HttpServletResponse로 받고/보낼 수 있다.
세션 => JWT 발전 흐름
1. 하나의 서버가 1개의 세션으로 여러 사용자를 관리
2. 여러 개의 서버가 각각 1개의 세션을 가지고 Load Balancer를 통해 사용자를 관리
3. 각 서버를 하나의 세션 저장소에 연결시켜 세션 저장소에서 모든 세션을 관리
4. 세션 저장소 대신 Secret Key를 사용해 서버에서 사용자를 검증함.

이때 Secret Key를 통해 Jwt로 암호화 및 복호화를 진행한다.

JWT란?
JWT란
JSON Web Token으로
JSON 형태의 데이터를 Base64로 인코딩하고
서명을 포함한 토큰 기반 인증 방식이다.
기존 세션 방식은
서버가 sessionId를 세션 저장소(메모리, Redis 등)에 저장하고
요청이 올 때마다 해당 저장소를 조회해야 했다.
반면 JWT는
토큰 안에 사용자 정보가 포함되어 있으며
서버는 Secret Key를 이용해 서명(Signature)만 검증하면 된다.
따라서 서버는 별도의 세션 저장소를 조회하지 않아도 되어
Stateless 한 인증 구조를 만들 수 있다.
'내배캠' 카테고리의 다른 글
| [내일배움캠프 본캠프]6일 차 TIL RestTemplate, Entity 연관 관계 (0) | 2026.02.16 |
|---|---|
| [내일배움캠프 본캠프] 5일 차 TIL Spring Security + JWT (0) | 2026.02.14 |
| [내일배움캠프 본캠프] 3일 차 TIL 영속성 컨텍스트 (0) | 2026.02.12 |
| [내일배움캠프 본캠프] 2일 차 TIL - SQL, JdbcTemplate, IoC, DI, Bean (0) | 2026.02.11 |
| [내일배움캠프 본캠프] 1일 차 TIL 상품-주문 미니프로젝트 피드백 (0) | 2026.02.10 |
