Project(4)
-
[Capstone] 스프린트 1 회고
캡스톤 디자인을 진행하면서 첫 번째 스프린트를 마쳤다. 캡스톤 디자인을 진행하면서 처음으로 마주한 스프린트를 마쳤다는 것에서 의미가 뜻깊었다. 회고는 간단하면서 효과적인 3L(Liked-Learned-Lacked) 방법을 활용하였다. 스프린트 기간은 2주였다. 스프린트 목표 팀이 설정한 이번 스프린트 목표는 사용자 기본 기능이었다. 기본 기능이라 함은 회원가입, 로그인, 포스트 CRUD였다. 진행도 회원가입 - 완료 로그인 - 완료 포스트 CRUD - 미완료 회원가입 및 로그인은 현재 이메일 인증 기반으로 구현하였다. 포스트 CRUD는 백엔드에서는 어느 정도 구현이 되었지만 프론트엔드에서 개발이 늦어져 완성되지 못했다. 3L 다음은 필자가 스프린트를 하면서 경험한 3L이다. Liked Jira를 활용한 ..
2023.05.20 -
[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