inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

AOP 적용

실제 Proxy 주입 확인에 대해 질문있습니다.

277

sfdfs

작성한 질문수 10

0

 

        
/* MemberController*/
@Autowired
    public MemberController(MemberService memberService) {

        this.memberService = memberService;
        System.out.println("memberService = " + memberService.getClass()); // 프록시 조회해보기
    }


/* MemberService*/
 public MemberService(MemberRepository memberRepository) {

        this.memberRepository = memberRepository;

        System.out.println("memberRepository = " + memberRepository.getClass()); // 프록시 조회해보기

    }

 

 

 

 

 

안녕하세요! 프록시 조회에 대해서 질문드립니다!!

프록시를 조회하고 싶어서 print문을 써봤습니다.그런데 MemberService 프록시는 MemberController 생성자에 print문을 작성해주고 MemberRepository 프록시는 MemberService 생성자에 print문을 작성해주어 확인했는데,

MemberController 프록시는 어디에 print문을 작성해서 확인해야 하나요?

 

두번째 질문은 출력 순서를 보면

 

1. AOP START 다음 2. 레포지토리가 출력되고  3. END 출력 4.그 다음에 서비스 프록시가 출력되는데,

순서가 왜 이렇게 되는지 궁금합니다. 스프링을 실행시키면 어떤 부분이 가장 먼저 실행되나요?? AOP START가 가장 먼저 출력되는 걸 보니 TimeTraceAop가 실행되고 그 다음에 MemberService가 실행되는 것인가요..?? 

작동되는 순서를 전혀 모르겠습니다ㅠㅠㅠ

SpringConfig이 먼저 실행되어 START에 SpringConfig.memberSerivce 메소드가 찍히는 것인가요?

 

스프링 프록시 spring MVC java spring-boot

답변 1

0

David

안녕하세요. 뮤언디님, 공식 서포터즈 David입니다.
1. Controller 내 메서드를 호출하는 코드가 필요합니다. 간단하게 테스트할 용도라면 Main 메서드 내에서 Controller 빈을 가져와서 호출하는 방법이 있습니다.

ConfigurableApplicationContext ac = SpringApplication.run(...);

MemberController memberController = (MemberController) ac.getBean("memberController");

memberController.getClass();

 

2. 이 부분은 AOP적용 강의를 천천히 보시고, 스프링 핵심 원리 - 기본편 강의의 섹션4,5,6,7을 학습하시면 이해하실 수 있습니다.

간단히 말씀드리면 빈을 등록하는 과정에서 Configuration 클래스 내 memberService() 메서드가 호출됩니다.

이때 Configuration 클래스는 AOP 적용대상이므로 memberService()가 실행되기 전에 AOP의 START 로그가 먼저 찍히게 되는 것입니다.


감사합니다.

..

0

76

2

Unused property.....

0

102

2

project JDK is misconfigured

0

132

2

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

0

83

2

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

0

91

2

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

0

230

1

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

0

104

2

윈도우 build test오류 질문

1

103

2

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

0

101

2

테스트 실행 시 에러 질문

0

292

1

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

0

77

1

빌드 후 libs 없음

1

129

1

윈도우 gradlew.bat 에러

0

168

1

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

0

90

1

java static class와 kotlin class

0

79

1

스프링 DB연결

0

127

1

소요 시간

0

87

2

ddl.sql에 빨간 밑줄

1

102

2

welcome page 에러

0

183

3

잘 모르겠습니다.

0

164

2

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

0

157

2

index.html Welcome page

0

125

1

프로젝트 gradle-groovy ?

0

370

1

테스트코드 메서드명 한글

0

202

2