본문 바로가기

Spring6

JPA 소개 - 1 배경 iBatis, MyBatis 혹은 Spring JDBC Template 같은 SQL Mapper를 사용하면, CRUD 용 SQL은 반복해서 작성해야 한다. -> 비생산적이다. JPA는 반복적인 CRUD SQL을 알아서 처리해주고, 객체 모델링과 관계형 데이터베이스 사이의 차이점도 해결해준다. 실행시점에 자동으로 SQL을 만들어서 실행하는데, JPA 사용자는 SQL을 직접 작성하는 것이 아니라 어떤 SQL이 실행될지 생각만 하면 된다. 즉, 정리하면 CRUD SQL을 작성할 필요가 없다. 조회된 결과를 객체로 매핑하는 작업을 대부분 자동으로 처리해준다. 애플리케이션을 SQL이 아닌 객체 중심으로 개발하니 생산성과 유지보수가 좋아진다. 데이터베이스를 변경( ex. MySQL -> Oracle )하여도 .. 2021. 6. 22.
Authentication과 SecurityContextHolder 인증이 된 Authentication 객체는 어떻게 되는가? → SecurityContextHolder 에 들어가서 Application 전반에 걸쳐 사용할 수 있게 된다. AuthenticationManager가 인증을 마친 뒤 Return 받은 Authentication 객체가 언제 SecurityContextHolder에 저장되는가? SecurityContextPersisteneceFilter.class SecurityContext를 Http session에 캐시하여 여러 요청에서 Authentication을 공유하는 필터 SecurityContextRepository를 교체하여 세션을 HTTP session이 아닌 다른 곳에 저장하는 것도 가능하다. SecurityContextPersistenec.. 2021. 6. 3.
커스텀 어노테이션 (@Target, @Retention) 커스텀 어노테이션 생성 규칙 어노테이션 타입은 @interface로 정의 모든 어노테이션은 java.lang.Annotation 인터페이스를 상속하기 때문에 다른 클래스나 인터페이스를 상속받으면 안 된다. 파라미터 멤버들의 접근자는 public이거나 default로 설정 파라미터 멤버들은 기본형과 String, Enum, Class, 어노테이션만 사용 가능 예외를 선언할 수 없다. 요소의 () 안에 매개변수를 선언할 수 없다. [CustomAnnotation] Spring Data Jpa -> Repository를 테스트하기 위해 커스텀 어노테이션 작성 @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @DataJpaTest(includeFil.. 2021. 6. 3.
AuthenticationManager와 Authentication Spring Security에서 인증(Authentication)은 AuthenticationManager가 한다. 인자로 받은 Authentication이 유효한 인증인지 확인하고 Authentication객체를 리턴한다. 인증을 확인하는 과정에서 비활성 계정, 잘못된 비번, 잠긴 계정 등의 에러를 던질 수 있다. AuthenticationManager의 구현체는 ProviderManager다. [ProvideManager.class] ProviderManager의 Authentication 객체에는 Principal의 username과 password 만이 들어온다. 해당 요청에 대한 인증을 처리할 수 있는 Provider를 찾아 이를 처리한 뒤 인증정보가 담긴 Authentication 객체를 반환.. 2021. 6. 2.