본문 바로가기

전체 글28

커스텀 어노테이션 (@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.
SecurityContextHolder와 Authentication SecurityContextHolder SecurityContext 제공, 기본적으로 ThreadLocal을 사용한다. ThreadLocal 이란? 한 쓰레드 내에서 Share 하는 저장소 → 즉, 메소드 파라미터를 사용하지 않아도 한 쓰레드 내에서 공유하기 때문에 데이터에 접근할 수 있다. SecurityContext Authentication 제공 Authentication Principal과 GrantAuthority 제공 Principal "누구"에 해당하는 정보 UserDetailsService에서 리턴한 객체 객체는 UserDetails 타입 GrantAuthority ROLE_USER, ROLE_ADMIN 등 Principal이 가지고 있는 권한을 나타낸다. 인증 이후, 인가 및 권한 확인할.. 2021. 6. 2.
AOP 정리 AOP란? Aspect-Oriented Programming : 관점(관심)지향 프로그래밍 애플리케이션 전체에 걸쳐 사용되는 기능을 재사용하도록 지원 장점 애플리케이션 전체에 흩어진 공통 기능을 하나의 장소에서 관리 다른 서비스 모듈들을 본인의 목적에만 충실하게 함 위의 그림에서 Service의 핵심 기능은 공통된 요소가 없습니다. 하지만, 부가기능 이란 과점으로 보면 상황이 달라집니다. 각각 Service는 로그를 기록하는 logging()이라는 메소드가 공통적으로 들어가는 것을 확인할 수 있습니다. 기존에 OOP에서 바라보던 관점을 다르게 하여 부가기능적인 측면에서 보았을 때 공통된 요소를 추출하는 것 입니다. [요약] OOP : 비지니스 로직의 모듈화 모듈화의 핵심 단위는 비지니스 로직 AOP : .. 2021. 6. 2.