강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

슈퍼이질님의 프로필 이미지
슈퍼이질

작성한 질문수

스프링 핵심 원리 - 고급편

스프링 AOP 구현1 - 시작

Spring Test에서 AOP 사용 질문 드립니다.

작성

·

941

·

수정됨

0

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요?(아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)

[질문 내용]

src/main이 아닌 src/test 에서AOP를 구현해서 쓰고 싶어서

Spring Boot Test에서 AOP 구현해서 사용하려고 하던 중 이슈가 있어서 질문 드립니다.

 

  1. 상황
    Spring Test에서 @Before 대신에 커스텀 어노테이션 구현하여 사용하고 싶은 상황입니다.

  2. 증상
    Src/test에 aop 관련 기능 구현을 한 상태이며, 별도 제가 만든 커스텀 어노테이션은 작동하지 않는 상황입니다.

    a). query.QueryItemSection()의 @PreAuthorize이 호출되는 시점에 WithTokenAspect.before가 호출 되지만, 제가 만든 어노테이션에 대해서는 호출이 안되는 상황입니다.

     

@Slf4j
@Aspect
@TestComponent
public class WithTokenAspect {
@Before("@annotation(com.testsupport.WithToken) || @annotation(org.springframework.security.access.prepost.PreAuthorize)")
 public void before(JoinPoint joinPoint) {
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface WithToken {
	String userId() default SysUserTest.GROUP_USER_ID;

	/**
	* MockHttpServletRequest
	 * header 추가 설정
	 */
	RequestHeader[] headers() default {};
}
@Slf4j
@EnableAspectJAutoProxy
@Import(WithTokenAspect.class)
@WithUserDetails(UserTest.USER_ID)
@Transactional
@SpringBootTest
public class ItemSectionTest {

@Test
@DisplayName("상품을 검색할 필드값 전달")
@WithMBPAuthorize(userId = "testUser")
public void QueryItemSection() {
ItemSection response = query.QueryItemSection();

 


시스템 어노테이션은 작동하고, 커스텀만 안되는 것을 봐서는 Test 자체에서 사용시 추가로 필요한 어노테이션 등록 작업이 필요한 것으로 예상되나, 찾지 못하여 질문 드립니다.

 

 


답변 1

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 슈퍼이질님 죄송하지만 질문 안내에 있는 것 처럼 강의 학습에 관련된 질문을 올려주시길 부탁드립니다.

저도 마음으로는 도움을 드리고 싶지만, 하루에도 수 많은 분들이 질문을 올려주십니다. 그래서 강의 학습과 관련된 질문에 초점을 맞추는 것이 맞다 생각합니다. 다시한번 이해를 부탁드립니다.

슈퍼이질님의 프로필 이미지
슈퍼이질
질문자

아닙니다.
강좌와 관련 없는 내용임에도 답변해주셔서 감사합니다.

슈퍼이질님의 프로필 이미지
슈퍼이질

작성한 질문수

질문하기