Loading the catalog…
Loading the catalog…
전체 학습 지도 단계 챕터 핵심 주제 확인할 결과 객체 등록·연결 1-1 ~ 1-2 수동 Bean 등록, 같은 타입의 Bean 선택 필요한 구현체를 정확히 주입 인증 기초 1-3 ~ 1-5 인증·인가, 쿠키·세션, JWT 로그인 상태를 확인하는 방식 비교 회원 기능 구현 1-6 ~ 1-8 JWT 유틸리티, 회원가입, 로그인 비밀번호 검증 후 토큰 발급 요청 공통 처리 1-9 ~ 1-10 Filter, Filter Chain, Spring Security Controller 앞에서 보안 처리 인증 흐름 연결 1-11 ~ 1-12 UserDetails, 로그인 인증, JWT 필터 인증 결과를 SecurityContext에 연결 접근 권한 제어 1-13 사용자 역할, 메서드 보안, 접근 불가 화면 일반 사용자와 관리자 접근 구분 요청 데이터 검증 1-14 ~ 1-15 Bean Validation, BindingResult 잘못된 입력을 처리 전에 차단 적용·복습 1-16 ~ 1-17 이메일 정규 표현식, @Pattern 회원가입 검증 조건 직접 작성 입문 과정에서 이어지는 변화 항목 입문 과정 이번 과정 객체 관리 자동 등록·생성자 주입 수동 등록·주입 대상 선택 사용자 구분 요청 데이터를 받아 CRUD 처리 인증된 사용자와 권한에 따라 처리 회원 정보 일반 데이터를 저장·조회 비밀번호 해시·중복 확인·역할 관리 요청 흐름 DispatcherServlet → Controller 보안 필터 → DispatcherServlet → Controller 데이터 확인 서비스에서 필요한 값 확인 DTO 제약조건과 검증 결과 처리 먼저 기억할 두 가지 흐름 로그인 요청 클라이언트가 아이디와 비밀번호를 전송합니다. 서버가 회원을 조회하고 비밀번호를 검증합니다. 인증 성공 시 JWT를 생성해 클라이언트에 전달합니다. 클라이언트가 이후 요청에 JWT를 함께 보냅니다. 로그인 이후의 API 요청 필터가 요청에서 JWT를 꺼냅니다. 토큰의 서명과 만료 여부를 검증합니다. 사용자 정보를 조회하고 인증 객체를 구성합니다. SecurityContext에 인증 정보를 설정합니다. 필요한 권한을 확인한 뒤 Controller로 요청을 전달합니다. 💡 핵심 : 로그인 성공 여부를 확인하는 과정과, 이후 요청마다 토큰을 검증하는 과정은 별개입니다. 01 · Bean을 수동으로 등록하는 방법 💡 한 줄 요약 : @Configuration 클래스의 @Bean 메서드가 반환하는 객체를 Spring 컨테이너에 등록합니다. 자동 등록과 수동 등록 구분 자동 등록 수동 등록 사용하는 요소 @Component , @Service , @Repository 등 @Configuration , @Bean 등록 방식 컴포넌트 스캔으로 클래스를 발견 설정 메서드에서 객체를 생성해 반환 대표적인 활용 Controller·Service 등 애플리케이션 클래스 외부 라이브러리 객체, 공통 설정 등록 위치 각 클래스 설정 클래스 직접 작성한 비즈니스 클래스에는 자동 등록이 편리합니다. 외부 라이브러리의 클래스를 Bean으로 만들거나 생성 과정을 직접 설정해야 할 때는 수동 등록을 활용할 수 있습니다. PasswordEncoder 등록 @Configuration public class PasswordConfig { @Bean public PasswordEncoder passwordEncoder() { return new BCryptPasswordEncoder(); } } Spring이 PasswordConfig 를 설정 클래스로 인식합니다. @Bean 메서드의 반환 객체를 컨테이너에서 관리합니다. 기본 Bean 이름은 메서드 이름인 passwordEncoder 입니다. 다른 클래스에서 PasswordEncoder 타입으로 주입받을 수 있습니다. @Service public class UserService { private final PasswordEncoder passwordEncoder; public UserService(PasswordEncoder passwordEncoder) { this.passwordEncoder = passwordEncoder; } } 비밀번호 처리 확인 String rawPassword = "sample-password"; String encodedPassword = passwordEncoder.encode(rawPassword); boolean correct = passwordEncoder.matches(rawPassword, encodedPassword); boolean wrong = passwordEncoder.matches("wrong-password", encodedPassword); // correct: true, wrong: false encode() 는 저장할 비밀번호 해시를 만듭니다. matches() 는 입력한 비밀번호가 저장된 해시에 대응하는지 확인합니다. BCrypt는 원래 비밀번호를 복원하는 복호화 기능이 아닙니다. 복습 체크 @Component 와 @Bean 의 등록 방식을 구분할 수 있습니다. @Bean 의 기본 이름이 어떻게 정해지는지 설명할 수 있습니다. 수동 등록한 PasswordEncoder 를 생성자로 주입받을 수 있습니다. 02 · 같은 타입의 Bean이 2개라면? 💡 한 줄 요약 : 같은 타입의 후보가 여러 개라면 기본 후보를 지정하거나 필요한 Bean을 명시합니다. 문제가 발생하는 상황 public interface Food { void eat(); } @Component public class Chicken implements Food { public void eat() { System.out.println("치킨"); } } @Component public class Pizza implements Food { public void eat() { System.out.println("피자"); } } Food 타입으로 Chicken 과 Pizza 가 모두 등록됩니다. 이때 하나의 Food 를 주입받으려는데 선택 기준이 없으면 Spring이 대상을 결정하지 못해 오류가 발생합니다. 해결 방법 비교 방법 의미 적합한 상황 Bean 이름과 주입 이름 일치 이름을 이용해 후보를 구분 이름으로 대상을 연결할 때 @Primary 여러 후보 중 기본으로 선택할 Bean 지정 자주 사용하는 구현체가 있을 때 @Qualifier 해당 주입 지점에서 필요한 후보 지정 특정 구현체가 반드시 필요할 때 @Primary와 @Qualifier @Component @Primary public class Chicken implements Food { public void eat() { System.out.println("치킨"); } } @Service public class MealService { private final Food food; public MealService(@Qualifier("pizza") Food food) { this.food = food; } } 별도 지정이 없는 단일 Food 주입에는 @Primary 가 붙은 Chicken 이 기본 후보가 됩니다. 위 생성자에서는 @Qualifier("pizza") 로 후보를 좁혔으므로 Pizza 가 주입됩니다. @Qualifier 는 타입 조건을 없애는 것이 아니라 타입에 맞는 후보 중 대상을 좁힙니다 . 📝 이름 구분 : 기본 컴포넌트 이름은 보통 클래스 이름의 첫 글자를 소문자로 바꾼 이름입니다. 필드·매개변수 이름에 의존하는 선택은 환경과 설정의 영향을 받을 수 있으므로, 필요한 구현체를 명확히 표현할 때는 @Qualifier 가 이해하기 쉽습니다. 복습 체크 같은 타입의 Bean이 여러 개일 때 왜 선택 문제가 생기는지 설명할 수 있습니다. 기본 구현체와 특정 구현체를 각각 지정할 수 있습니다. @Qualifier 가 지정된 주입 지점에서 어떤 Bean을 선택하는지 예측할 수 있습니다.
What RADAR observed and classified to build this opportunity. It is what the source published, not a verification that the offer is still active.
Spring 숙련 Chapter 1 - 객체 등록·연결. 전체 학습 지도 단계 챕터 핵심 주제 확인할 결과 객체 등록·연결 1-1 ~ 1-2 수동 Bean 등록, 같은 타입의 Bean 선택 필요한 구현체를 정확히 주입 인증 기초 1-3 ~ 1-5 인증·인가, 쿠키·세션, JWT 로그인 상태를 확인하는 방식 비교 회원 기능 구현 1-6 ~ 1-8 JWT 유틸리티, 회원가입, 로그인 비밀번호 검증 후 토큰 발급 요청 공통 처리 1-9 ~ 1-10 Filter, Filter Chain, Spring Security Controller 앞에서 보안 처리 인증 흐름 연결 1-11 ~ 1-12 UserDetails, 로그인 인증, JWT 필터 인증 결과를 SecurityContext에 연결 접근 권한 제어 1-13…
Open source