1. 내일 할 일
- 12:00 베이직 반 수업
- 14:00 알고리즘 조별 모임
- 외 개인 공부
2. 오늘의 공부
* Bean은 @Component를 사용하여 자동등록하는 것이 좋지만, 기술적인 문제나 공통 관심사를 처리할 때 사용하는 객체들은 수동으로 등록하기도 한다.
수동 등록 방법
@Configuration
public class PasswordConfig {
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
}
// 1. @Bean 설정된 메서드 호출
PasswordEncoder passwordEncoder = passwordConfig.passwordEncoder();
// 2. Spring IoC 컨테이너에 빈 (passwordEncoder) 저장
// passwordEncoder -> Spring IoC 컨테이너
* 인증과 인가 - JWT
인증: 해당 유저가 실제 유저인지 인증
인가: 특정 리소스에 접근 가능한지 허가 여부를 확인
JWT를 통한 인증/인가: 로그인 정보를 서버에 저장하지 않고, JWT로 암호화하여 클라이언트에 저장
* Validation: 검증 과정
@PostMapping("/user/signup")
public String signup(@Valid SignupRequestDto requestDto, BindingResult bindingResult) {
// Validation 예외처리
List<FieldError> fieldErrors = bindingResult.getFieldErrors();
if(fieldErrors.size() > 0) {
for (FieldError fieldError : bindingResult.getFieldErrors()) {
log.error(fieldError.getField() + " 필드 : " + fieldError.getDefaultMessage());
}
return "redirect:/api/user/signup";
}
userService.signup(requestDto);
return "redirect:/api/user/login-page";
}
NullPointerException 예외를 해결하기 위해서 가장 필요한 과정
때에 따라서는 Validation을 예외처리함으로써 프로그램을 동작시킬 수도 있음(위 코드의 예)