프레임워크들이 어떻게 동작하는지 궁금할 때 Reflection 개념을 알아두면 이해에 도움이 될 것 같아 정리해보았다. Reflection구체적인 클래스 타입을 알지 못해도 그 클래스의 정보(메서드, 타입, 변수 등등)에 접근할 수 있게 해주는 자바 API이다. public class Car { private final String name; private int position; public Car(String name, int position) { this.name = name; this.position = position; } public void move() { this.position++; } public int getP..
Annotation어노테이션이란 주석이라는 뜻으로 자바에서 코드에 "이 어노테이션이 붙은 코드는 어떤식으로 사용된다." 와 같은 메타데이터를 추가하기 위해 사용된다.하지만 어노테이션 자체만으로는 아무런 기능이 없는 주석이기 때문에 어노테이션에 대한 처리 로직이 필요하다. 어노테이션 생성 방법아래는 @Bean 어노테이션의 구조로 @Target, @Retetion을 지정해주고, @Interface로 선언한다.아래 필드들은 어노테이션 파라미터로 다음과 같이 사용할 수 있다. ex) @Bean(name="testBean")@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE})@Retention(RetentionPolicy.RUNTIME)@Documentedpu..
Spring boot를 사용할 때는 문제가 없던 Lombok이 Maven project를 생성하니 인식이 안되는 문제가 발생했다. 그 이유는 Spring Initializer로 Lombok을 추가하면 아래와 같이 2개의 의존성이 추가되는 반면, Maven Repository에서 찾은 Lombok의 존성은 compileOnly 하나만 추가하기 때문이다. compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' compileOnly와 annotationProcessor의 차이compileOnly는 말 그대로 컴파일 시점에만 참조되며, 빌드된 실행 파일에는 포함되지 않는다.따라서 API 정의나 어노테이션 라..
Container 환경 구축Ubuntu 설치 및 실행docker run 명령에서 반드시 -it 옵션을 줘야 가상 환경에서 사용자가 명령을 입력할 수 있는 환경이 만들어진다.-i: 입력 활성화-t: 가상 터미널 할당 docker pull ubuntu:20.04docker run -it -d -p 1203:1203 --name ubuntu-dev ubuntu:20.04 docker exec -it ubuntu-dev bash Ubuntu 환경 세팅1. sudo, vi, git 설치apt-get updateapt-get install -y sudo vim git 2. 터미널 색상 변경 - 링크 3. 도커 컨테이너와 연결하는 쉘은 매번 다른 쉘이라 source 명령으로 매번 적용해줘야 한다.# bashrc에 정..