
전 게시물에 이어 두번째 설정 클래스 이다.

: 설정파일을 만들기 위한 어노테이션.
: Bean을 틍록하기 위한 어노테이션.
: 해당 메서드가 빈(Bean)을 생성한다.
※ 중요한 점은 @Configuration 안에서 Bean을 등록할 때 싱글톤이 되도록 보장한다.
public PasswordEncoder getPasswordEncoder() {
return new BCryptPasswordEncoder();
}
getPasswordEncoder 메서드는 BCryptPasswordEncoder 객체를 반환하여 암호를 안전하게 해싱하는 데 사용된다.
BCryptPasswordEncoder 란?
- 스프링 시큐리티 프레임워크에서 제공하는 클래스 중 하나로 비밀번호를 암호화하는 데 사용할 수 있는 메서드를 가진 클래스.
- BCrypt 해싱 함수를 사용해서 비밀번호를 인코딩 해주는 메서드 제공
- 사용자에 의해 제출된 비밀번호와 저장소에 저장되어 있는 비밀번호의 일치 여부를 확인해주는 메서드를 제공
encode : 패스워드 암호화 해줌. 반환 타입 String
matchers : 사용자에게 받은 패스워드와 인코딩된 패스워드의 일치 여부 확인해줌. 반환 타입 boolean
upgradeEncoding : 더 나은 보안을 위해서 인코딩 된 암호를 다시 한번 더 인코딩 해야 하는 경우 사용

EntityManager 를 빈으로 주입할 때 사용하는 어노테이션.
❓사용하는 이유❓
여러 쓰레드가 동시에 접근하면 동시성 문제가 발생하여 쓰레드 간에는 EntityManager를 공유하면 안된다.

JPAQueryFactory 를 Bean으로 등록해서 프로젝트 전역에서 사용할 수 있도록 한다.
package com.example.demo.config;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import com.querydsl.jpa.impl.JPAQueryFactory;
@Configuration
public class SportsComplexConfig implements WebMvcConfigurer{
@Bean
public PasswordEncoder getPasswordEncoder() {
return new BCryptPasswordEncoder();
}
@PersistenceContext
private EntityManager entityManager;
@Bean
public JPAQueryFactory jpaQueryFactory() {
return new JPAQueryFactory(entityManager);
}
}
여기까지가 SportsComplexConfig 이다.
다음은 WebMvcConfig