본문 바로가기

Java/[패스트캠퍼스] 50일 포트폴리오 챌린지

[10일차] 10개 프로젝트로 완성하는 백엔드 웹개발(Java/Spring)

수강 강의명
수강 강의명

Reflection

힙 영역에 로드된 객체(클래스 타입)를 통해 필드/메소드/생성자를 접근 제어자에 상관 없이 사용 가능하도록 지원하는 API

런타임 시점에 동적으로 특정 클래스의 정보를 추출해 낼 수 있는 프로그래밍 기법이다.
주로 프레임워크 or 라이브러리 개발 시에 사용한다.
https://www.baeldung.com/reflections-library

 

Reflection을 사용하는 프레임워크 & 라이브러리

• Spring 프레임워크(예 : DI)
• Test 프레임워크(예 : JUnit)
• JSON Serialization/Deserialization 라이브러리(예 : Jackson) 등

 

요구사항

@Controller 애너테이션이 설정된 모든 클래스를 찾아 출력한다.

 

의존성 설정

dependencies {
    implementation 'javax.servlet:javax.servlet-api:4.0.1'

    implementation 'org.reflections:reflections:0.10.2'

    implementation 'ch.qos.logback:logback-classic:1.2.3'

    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1'

    testImplementation 'org.assertj:assertj-core:3.23.1'
}

 

실습 과정

① Controller annotation를 생성한다.
     annotation 패키지 생성 > New Java Class > Annotation
② annotation를 붙일 Controller 객체를 생성한다.
③ 실습을 위한 프로덕션 코드를 작성한다.
④ 테스트 코드를 작성한다.
⑤ 테스트 코드에 작성한 코드를 메서드로 추출하여 정상 작동하는지 확인한다.

수강 화면수강 화면
수강 화면

 

런타임 시점에 특정 클래스의 정보를 추출하면 좋은 점이 뭘까?

JUnit와 DI에 사용하는 걸 보면 아마 외부적인 요소와 관련 있는 게 아닐까?

 

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

https://bit.ly/43z0P6S

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

 

#패스트캠퍼스 #포트폴리오 #직장인자기계발 #환급챌린지 #포트폴리오챌린지 #패스트캠퍼스후기 #초격차패키지 #오공완