Project/DI Framework(3)
-
[DI Framework] 어노테이션 개발
먼저 프레임워크에서 사용할 어노테이션을 개발해보자. 먼저 목록부터 살펴보자. @Bean @Configuration이 선언된 클래스의 메서드에 적용되며 해당 메서드를 빈으로 등록함을 의미한다. @Component @ComponentScan으로 탐색되며 해당 클래스를 빈으로 등록함을 의미한다. @ComponentScan 이 어노테이션이 선언된 클래스의 디렉터리부터 모든 하위 패키지를 순회하며 @Component를 탐색한다. @Configuration 메서드 방식으로 빈을 등록하기 위해 사용되며, 설정 파일이라는 의미를 담고 있다. @Injectable 이 어노테이션이 선언된 위치에 따라 빈을 주입함을 의미한다. 개발할 어노테이션들에 대해 살펴보았다. 이제 개발해보도록 한다. 어노테이션 개발은 크게 어렵지 않..
2022.01.18 -
[DI Framework] 개발 환경 세팅
개발 환경 JDK - OpenJDK 11 패키지 관리 - Maven IDE - Intellij IDEA JUnit 4 pom.xml 4.0.0 com.wscrg di 1.0-SNAPSHOT di http://www.example.com UTF-8 11 11 junit junit 4.11 test org.reflections reflections 0.10.2 reflections 라이브러리는 리플렉션을 쉽게 할 수 있도록 해주는 라이브러리이다. 이 라이브러리를 쓴 이유는 @ComponentScan과 같은 클래스 탐색 기능이 귀찮아서였다. 아마 직접 구현하려면 해당 파일의 디렉터리부터 파일을 스트림으로 읽어서 @Component나 @Configuration이 있는지 탐색하거나 바이트 코드를 분석(이는 필자도..
2022.01.18 -
[DI Framework] DI 프레임워크 개발
개발 동기 인프런에서 백기선님의 '더 자바: 코드를 조작하는 다양한 마법' 강의를 수강했다. 강의를 통해 어노테이션 프로세서, 바이트 코드 조작, 리플렉션 등에 대해 기본적인 지식을 습득할 수 있었다. 이 중에 리플렉션을 통해 간단하게 필드 주입 DI 프레임워크를 개발해보는 시간이 있었다. 필자는 스프링처럼 생성자 주입, 필드 주입까지 해보고 싶어 이 프로젝트를 시작하게 되었다. 스프링의 DI 방식 개발에 앞서 스프링의 DI 방식을 살펴보도록 하자. 스프링에서는 @Configuration의 @Bean이 선언된 메서드 또는 @Component가 선언된 클래스를 빈으로 등록한다. 필자도 이 방식을 채택하기로 했다. 빈을 저장하기 위한 컨텍스트를 생성한다. 컨텍스트에서 맵으로 빈을 관리한다. @Componen..
2022.01.18