FitNest 프로젝트 ⑤-2 SportsComplexConfig 설정 클래스

jjang9·2024년 5월 17일

FitNestProject

목록 보기
7/8
post-thumbnail

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

@Configuration


: 설정파일을 만들기 위한 어노테이션.
: Bean을 틍록하기 위한 어노테이션.

@Bean

: 해당 메서드가 빈(Bean)을 생성한다.

※ 중요한 점은 @Configuration 안에서 Bean을 등록할 때 싱글톤이 되도록 보장한다.

getPasswordEncoder 메서드

	public PasswordEncoder getPasswordEncoder() {
	      return new BCryptPasswordEncoder();
	}

getPasswordEncoder 메서드는 BCryptPasswordEncoder 객체를 반환하여 암호를 안전하게 해싱하는 데 사용된다.

BCryptPasswordEncoder 란?

  • 스프링 시큐리티 프레임워크에서 제공하는 클래스 중 하나로 비밀번호를 암호화하는 데 사용할 수 있는 메서드를 가진 클래스.
  1. BCrypt 해싱 함수를 사용해서 비밀번호를 인코딩 해주는 메서드 제공
  2. 사용자에 의해 제출된 비밀번호와 저장소에 저장되어 있는 비밀번호의 일치 여부를 확인해주는 메서드를 제공

encode : 패스워드 암호화 해줌. 반환 타입 String
matchers : 사용자에게 받은 패스워드와 인코딩된 패스워드의 일치 여부 확인해줌. 반환 타입 boolean
upgradeEncoding : 더 나은 보안을 위해서 인코딩 된 암호를 다시 한번 더 인코딩 해야 하는 경우 사용

@PersistenceContext


EntityManager 를 빈으로 주입할 때 사용하는 어노테이션.

  • 빈으로 주입받을 때 EntityManager의 경우 @Autowired 가 아니라 해당 어노테이션으로 주입.
  • SpringBoot JPA 에서는 엔티티 매니저 팩토리 관련 부분을 작성하지 않아도 생성 및 주입을 해준다.

❓사용하는 이유❓
여러 쓰레드가 동시에 접근하면 동시성 문제가 발생하여 쓰레드 간에는 EntityManager를 공유하면 안된다.

jpaQueryFactory 메서드

JPAQueryFactory 를 Bean으로 등록해서 프로젝트 전역에서 사용할 수 있도록 한다.


SportsComplexConfig

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

profile
안녕하세요! jjang9 입니다( ̄︶ ̄)

0개의 댓글