728x90
반응형
SMALL

2024/05/24 2

@ComponentScan

스프링을 사용할 때 스프링 빈으로 등록하는 가장 편리한 방법은 컴포넌트 스캔이다.스프링 빈으로 등록하고 싶은 타입(클래스, 인터페이스)에 그저 `@Service`, `@Controller`, `@Repository`, `@Component` 이런 애노테이션을 붙이기만 하면 스프링이 자동으로 빈으로 등록해주기 때문에. 근데, 스프링에 용빼는 재주가 있는게 아니다. 결국 스프링이 컴포넌트 스캔을 하기 위해선 어디서부터 컴포넌트 스캔을 하고 어떤것들을 제외하고 등등의 설정을 다 해줘야한다. 그리고 그것을 이 `@ComponentScan`이라는 애노테이션으로 간단하게 할 수 있다. 그리고 이건? 컴포넌트 스캔을 위해 필수적으로 필요한 애노테이션이다.  "네? 저는 스프링부트에서 저 애노테이션 안쓰고도 잘 되던데..

스프링 빈은 무상태로 설계해야 한다 ❗️

정답은 아닌데 개인적으로 맞다고 본다. 스프링은 기본적으로 스프링 빈을 싱글톤으로 등록한다.싱글톤이 안티패턴이라고까지 불릴 정도로 싱글톤은 여러 문제점이 있는데 스프링은 그 문제들을 전부 해결해준 상태로 싱글톤으로 등록해준다. 싱글톤의 문제점싱글톤을 만들어내야 하는 코드 자체가 번거롭다.의존관계상 클라이언트가 구체 클래스에 의존한다. (싱글톤클래스.getInstance())구체 클래스에 의존한다는것은 DIP(의존관계 역전 법칙)를 위반한다는 뜻이고 그 뜻은 OCP원칙을 위반할 가능성이 높다.테스트하기 어렵다자식 클래스를 만들기 어렵거나 불가능하다 싱글톤은 패턴이든, 스프링 같은 싱글톤 컨테이너를 사용하든 인스턴스가 하나이고 그걸 공유하는 방식이라면 상태를 유지하게 설계하면 안된다.  무상태로 설계하거나,..

728x90
반응형
LIST