스프링에서 스코프(Scope)란 무엇인가?
·
스프링
0. 들어가며최근에 스프링을 기초부터 공부하면서 저는 @Component나 @Service 같은 어노테이션을 사용하는 것은 익숙했지만 빈이 언제 생성되고 언제 소멸되는지, 즉 객체의 생명주기에 대해서는 전혀 모르고 있었다는 것을 깨달았습니다.“이 객체가 얼마나 오래 살아야 하는가?”“누가 이 객체를 관리할 책임이 있는가?”를 명확히 아는 것이 매우 중요합니다. 이를 관리해주는 것이 바로 스코프(Scope) 개념입니다. 스코프를 이해하면 IOC 컨테이너가 빈을 어떻게 관리하는지 그리고 싱글톤과 프로토타입, 웹 스코프가 왜 존재하는지 자연스럽게 이해할 수 있습니다.이번 글에서는 제가 공부하면서 정리한 내용을 바탕으로 스프링에서 지원하는 대표적인 스코프각 스코프가 IOC 컨테이너와 어떻게 연결되어 관리..
스프링을 스프링답게 만드는 진짜 이유: IoC·AOP·PSA 삼각형의 정체
·
스프링
0. 들어가며 스프링은 자바 기반의 오픈소스 프레임워크입니다.그리고 스프링은 단순히 편리한 기능을 제공하는 프레임워크가 아니라 자바로 객체지향 프로그래밍을 더 잘 할 수 있도록 도와주는 프레임워크입니다. 그 이유는 스프링의 뼈대에 IoC/DI, AOP, PSA, 그리고 POJO라는 핵심 개념들이 있기 때문입니다.이 개념들은 각각 독립적인 기능처럼 보이지만 결국 공통된 목적을 가지고 있습니다.바로 객체가 자신의 역할과 책임에만 집중할 수 있도록 만드는 것입니다. 그래서 스프링을 제대로 이해하기 위해서는 어노테이션이나 사용법을 익히는 것보다이른바 ‘스프링 삼각형’ 이라 불리는 IoC/DI, AOP, PSA 그리고 POJO를 먼저 이해하는 것이 중요하다고 느꼈습니다. 이 글은 「토비의 스프링」을 읽으며 스프..
@Data 사용을 지양해야 하는 이유
·
스프링
@Data@Data는 Lombok에서 제공하는 어노테이션이다.한 줄로 여러 기능을 자동으로 생성해 준다.@Data = @Getter + @Setter + @ToString + @EqualsAndHashCode + @RequiredArgsConstructor포함된 기능@Getter: 모든 필드의 getter 생성@Setter: 모든 필드의 setter 생성@ToString: toString() 메서드 생성@EqualsAndHashCode: equals(), hashCode() 메서드 생성@RequiredArgsConstructor: final 필드 또는 @NonNull 붙은 필드 생성자 생성왜 @Data 를 쓰면 안좋은가?1.모든 필드에 대해 Getter/Setter 생성캡슐화 원칙에 어긋난다.-Sette..