스프링 공부/어노테이션 정리 6

@EventListner

이 어노테이션을 알기 전에, Event가 무엇인지 알아야 한다. 우리가 게임에서 이야기하는 이벤트란, 일정 기간동안 진행하는 행사를 말한다. 개발에서 이벤트를 말할 때, 우리가 생각해야 하는 것은 이 행사라는 단어다. How Event? 이벤트란 무엇인가라고 한다면, 행사라고 바로 앞에 적혀있다. 이를 조금 더 자세하게 말하자면 애플리케이션 상에서 나타나는 사건이다. 프론트엔드 개발자라면 더욱 이해하기 쉽다. onClickEvent, hober와 같은 부분들이 모두 JS의 이벤트를 기반으로 동작하는 함수들이다. 이런 함수들을 잘 읽어보면, 사용자가 일으키는 일련의 사건을 통해 해당 로직들을 동작시킨다는 것이다. 하지만, 나는 백엔드를 공부하고 있다. 이 이벤트를 통해 요청을 받는다면, 이에 대한 응답을 ..

@뭐시깽이Constructor

프로젝트를 만들다보면, 필요에 따라 AllArgsConstructor, RequiredArgsConstructor, NoArgsConstructor를 보게된다. 이에 대해 머리를 한번 정리하고 가야할 필요가 있다고 생각이 들어서, 하나씩 정리를 해보려고 한다. @AllArgsConstructor 클래스의 모든 인스턴스를 가지는 생성자를 자동적으로 만들어주는 역할을 한다. @RequiredArgsConstructor AllArgsConstructor와 비슷하게 모든 인스턴스를 가지는 생성자를 자동적으로 만들어주지만, @NonNull과 같은 특별한 제약조건을 가지게 되며, 이러한 조건들을 지키기 않을 경우 Exception을 던진다. @NoArgsConstructor 변수 없는 생성자를 만들어준다. 그런데,..

@JsonInclude

백엔드를 공부해본 사람은 알 것이다. 모든 프로젝트의 데이터는 Json 타입으로 넘어간다. 그래야 프론트엔드에서 이를 받아 출력문을 만들기 수월해진다. 이렇게 Json타입으로 넘어가는 데이터를 관리하는데에 쓰이는 어노테이션중 하나가 JsonInclude이다. 객체에 데이터가 존재하고, 이 객체가 Json타입으로 넘어가 인스턴스들을 데이터로 가지고 프론트엔드로 간다. 이 때, 넘어가는 데이터에 Json으로 어떤 것들이 넘어가는지를 정할 수 있다. 그러면 어떻게 그 데이터들을 정할 수 있을까? @JsonInclude가 없고 해당 객체의 데이터를 프론트엔드로 넘기면, 데이터가 어떤 상태건 모든 데이터가 Json으로 프론트엔드로 넘어간다. 이 때 어노테이션과 괄호에 추가 설정을 통해 어떻게 데이터를 넘길지 정할..

@Log(@Slf4j를 써보다가 궁금해서 찾아본 내용 정리)

이게 뭘까? 사실 다른 어노테이션들은 이름을 보면 간단하게 뜻을 유추해볼 수 있거나, 구글링해야할 단어들을 명확히 알 수 있다. 그런데 이건 진짜 모르겠다. 그대로 복사해서 구글링을 해보기도 했다(진짜 별다줄이라는 말이 괜히 있는게 아니다) 근데, 구글링 하기 전에 항상 들어가보는 곳이 있다. package lombok.extern.slf4j; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** * Causes lombok to generate a logger fi..

@Bean

정의 Spring IOC Container에 해당 Spring Bean을 등록시켜 사용하게 한다. Bean은 스프링에 의해 생성되고 관리되는 객체들을 말하며, 여기에 다른 객체를 추가할 때 @Bean 어노테이션을 넣어 객체를 추가시킬 수 있다. 여태까지 공부했던 과정에서는, @Configuration어노테이션을 넣은 클래스를 스프링 설정에 사용할 수 있으며, 여기에서 사용할 객체들을 @Bean어노테이션과 메서드를 통해 스프링 빈으로 등록해, 사용할 수 있다. 특징 @Component, @Bean 두가지 방식이 있다. @Component 컴포넌트로 설정해준다는 뜻이며, 이 때 ComponentScan을 통해 어디서부터 컴포넌트를 불러와 사용할지 등을 정해주어야 한다. @Bean 스프링 빈에 자동 등록되어,..

@Configuration

정의 Congifuration은 설정을 만들거나, 내부에 @Bean을 만들기 위해 클래스에 적용시키는 어노테이션이다. 클래스에 Configuration 어노테이션을 등록하면 해당 클래스를 설정에 대해 사용해줄 수 있고, @Bean을 통해 SpringBean을 등록할 수 있다. 특징 @Configuration을 통해 해당 클래스가 설정에 대한 파일임을 알 수 있다. 내부의 메서드(Bean으로 호출된)을 가져올 경우, 클래스를 호출해 내부의 메서드를 호출하는 방식이 아닌, 메서드만을 호출하는 방식이다. 또한, 내부에 @Bean을 통해 Spring Bean을 등록할 것임을 알 수 있다. 주의점 : @Configuration은 Bean을 등록하기 위한 어노테이션이라는 것은 아니다. 방식 public class ..