inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

AOP 적용

AOP @Bean 사용시 시간 출력

356

mippy98

작성한 질문수 1

0

안녕하세요!! 좋은 강의 제공해 주셔서 정말 감사합니다.
이제 막 스프링 공부를 시작하는 와중에, 어떻게 시작해야 할지 모르는 상황에서 정말 많은 도움 됐습니다!!

궁금한 점은 AOP를 직접 @Bean으로 등록해 줘서 실행했을 때, 왜 시간 출력물이 나오지 않는 것인지 궁금합니다!

SpringConfig에서
return new TimeTraceAop(); 으로 새로운 TimeTraceAop()객체를 리턴하는데,
TimeTraceAop()의 execut() 메소드가 호출이 안되는 건가요? 

시간을 출력하려면 어떻게 해야 할까요?
 
아래는 @Bean으로 직접 등록하고 실행한 결과입니다!

aop MVC java spring spring-boot

답변 1

0

David

안녕하세요. mippy98님, 공식 서포터즈 David입니다.

강의내용과 Around쪽 코드가 조금 달라보이는데, 모든 코드를 강의내용과 동일하게 작성하신 뒤 다시 실행해보시겠어요?

감사합니다.

0

mippy98

@Bean으로 직접 등록해서 하는 방식으로 바꾼건데 저렇게 하는거 아닌가요..? ㅜㅜ 

패키지명은 강의에 나오는거랑 다르게 memberproject로 했습니다

코드 첨부 해보겠습니다..!!

 

TimeTraceAop.java


@Aspect
public class TimeTraceAop {

@Around("execution(* com.example.meberproject..*(..)) && !target(com.example.memberproject.SpringConfig)")
public Object execut(ProceedingJoinPoint joinPoint) throws Throwable {
// 시간 로직
long start = System.currentTimeMillis();
System.out.println("STRAT: " + joinPoint.toString());
return joinPoint.proceed();

} finally {
long finish = System.currentTimeMillis();
long timeMs = finish - start;
System.out.println("END: " + joinPoint.toString() + " " + timeMs + "ms");
}
}
}

 

SpringConfig.java


@Configuration
public class SpringConfig {

private MemberRepository memberRepository;

@Autowired // 생략 가능
public SpringConfig(MemberRepository memberRepository) {
this.memberRepository = memberRepository;
}

@Bean
public MemberService memberService() {
return new MemberService(memberRepository);
}


@Bean // 스프링 빈에 직접 AOP 등록
public TimeTraceAop timeTraceAop() {
return new TimeTraceAop();
}

}

0

David

그렇다면 AOP가 적용된 메서드가 하나라도 실행이 된 상태인가요?

페이지를 요청해서 메서드가 호출되게 하신 후 AOP가 적용되었는지 확인해주세요.

0

mippy98

위에 첨부한 사진이 서버 실행해서 spring3으로 가입하고 회원 목록 조회 했을때 나오는 콘솔 화면 입니다. 그래서 보면 member = spring3 이 출력 되어있어요! 이거 출력하는 코드는 MemberController.java에  create 메소드에 있습니다. 

회원 목록 페이지에도 spring3이 있습니다. 그럼 메소드는 실행이 된건데, 그냥 AOP가 적용이 안된걸까요...? 

 

spring55로 다시 실행한 결과 첨부하겠습니다 ㅜㅜ

0

David

질문자분께서 작성하신 코드로 테스트해보았는데, 잘 동작했습니다.

더 자세한 확인을 위해 아래 가이드를 따라 프로젝트를 전달해주실 수 있을까요?

---

전체 프로젝트를 압축해서 구글 드라이브로 공유해서 링크를 남겨주세요.
구글 드라이브 업로드 방법은 다음을 참고해주세요.

https://bit.ly/3fX6ygx

주의: 업로드시 권한 문제 꼭 확인해주세요


추가로 다음 내용도 코멘트 부탁드립니다.

1. 실행 방법을 알려주세요.
2. 어떻게 문제를 확인할 수 있는지 자세한 설명을 남겨주세요.

인텔리제이 오류

0

52

1

..

0

113

2

Unused property.....

0

121

2

project JDK is misconfigured

0

168

2

외부 API의 ID 타입(String/UUID)과 내부 도메인의 ID 타입(Long)이 불일치할 때의 설계 정석

0

102

2

단위/통합 테스트 버전충돌 문제

0

103

2

❗️springboot 4.0.2 버전 aspectj dependency 설정❗️

0

257

1

왜 컨트롤러는 변한게 없는데 새로 만든 html 파일이 뜨나요?

0

125

2

윈도우 build test오류 질문

1

123

2

테스트 관련 공부에 대한 조언을 얻고 싶습니다

0

113

2

테스트 실행 시 에러 질문

0

320

1

name을 통한 비교와 객체를 통한 비교

0

82

1

빌드 후 libs 없음

1

151

1

윈도우 gradlew.bat 에러

0

188

1

@PostMapping("/members/new")가 동작하지 않습니다

0

98

1

java static class와 kotlin class

0

91

1

스프링 DB연결

0

146

1

소요 시간

0

96

2

ddl.sql에 빨간 밑줄

1

118

2

welcome page 에러

0

202

3

잘 모르겠습니다.

0

174

2

fail을 똑같이 쳤는데 오류가 발생해요

0

174

2

index.html Welcome page

0

138

1

프로젝트 gradle-groovy ?

0

404

1