@Annotation

가언·2024년 7월 17일

spring

목록 보기
3/8

✅ @Component, @ComponentScan, @Autowired

위 세 단어를 IoC, DI를 사용해서 설명해 봅시다!

  • @Component: spring 컨테이너에 빈으로 등록할 클래스들을 명시해주는 것
  • @ComponentScan: springbootApplication 실행 시 spring bean으로 등록할 객체들을 찾는 어노테이션
  • @Autowired: 생성자의 의존성을 spring이 대신 주입해 줄 수 있도록 명시하는 어노테이션

결론

IoC: 야! 이제 관리 너가해 제어권을 스프링에게 건네는 것
그럼 어떻게 객체를 가져올건데? @Autowired로 DI 가능!

코드

Q. 왜 한번만 생성자가 만들어질까?

A. THIS IS SINGLETON


객체를 반환하는 메소드 위에 @Bean을 달면 반환되는 객체를 컨테이너에 등록하게 된다!!
@Bean으로 등록된 생성자 객체를 불렀기 때문에 싱글톤 패턴이 적용됨.
만약) 다음 코드처럼 변경한다면,

public Person person(){
        return new Person(new House()); //갖고있는걸 줘
    }

생성자가 두번 생성되어 반쪽짜리 IoC라고 볼 수 있다..!😓

싱글톤 코드

	if(instance==null){
    	//참고: 멀티스레딩을 지원하는 앱을 만드는 경우 여기에 스레드 잠금을 설정해야 한다.
    	instance=new Singleton();
    }
    return instance
profile
@gari_guri

0개의 댓글