초웹개_스프링5_DI(2)

네코·2022년 5월 2일
0

초웹개

목록 보기
2/10
post-thumbnail

객체 주입 방식

  • 생성자 방식
    빈 객체를 생성하는 시점에 모든 의존객체가 주입

  • 세터 메서드 방식
    세터 메서드 이름을 통해 어떤 의존 객체가 주입되는지 알 수 있음.

각각의 장점은 반대 것의 단점이 된다.

싱글톤


Q) memberRegisterService()와 ChangePasswordService에서의 memberDao()는
서로 다른 객체를 리턴하지 않을까 ?

A) 스프링 컨테이너가 생성하는 빈은 싱글톤이므로 메서드를 여러번 호출해도 항상 하나의 객체 리턴

두개 이상의 설정 파일 사용

1. @Configuration,@Autowired

새로운 패키지 만들고 AppCtx의 configuration파일을 두개로 나눴다.
이 때 다른 설정 파일의 빈을 필도에 할당할 때
@Autowired 를 이용하면 필요한 빈이 주입된다.


그런데 AppConfig2에서 @Autowired로 선언한 memberDao에 에러가 표시되었다.
intellij의 버그라는 글들이 많았고,, 임시로 @ComponentScan({"패키지명"})을 통해 임시로 해결했다.

Help->Edit Custom properties에 idea.spring.boot.filter.autoconfig=false 추가로도 해결 가능하다고 하나 나의 경우 해결되지 않았다.

2. @Import

@Import(다른 설정클래스.class) // 배열로 여러개 지정 가능 {a1.class, a2.class}
이 후에 스프링 컨테이너 초기화시 다른 설정클래스를 지정해 주지 않아도 된다.

Bean 객체

주입할 객체가 꼭 스프링 빈이 아니어도 된다.
등록하지 않으면 컨테이너가 관리하지 않는다.

0개의 댓글