생성자 방식
빈 객체를 생성하는 시점에 모든 의존객체가 주입
세터 메서드 방식
세터 메서드 이름을 통해 어떤 의존 객체가 주입되는지 알 수 있음.
각각의 장점은 반대 것의 단점이 된다.
Q) memberRegisterService()와 ChangePasswordService에서의 memberDao()는
서로 다른 객체를 리턴하지 않을까 ?
A) 스프링 컨테이너가 생성하는 빈은 싱글톤이므로 메서드를 여러번 호출해도 항상 하나의 객체 리턴
새로운 패키지 만들고 AppCtx의 configuration파일을 두개로 나눴다.
이 때 다른 설정 파일의 빈을 필도에 할당할 때
@Autowired 를 이용하면 필요한 빈이 주입된다.
그런데 AppConfig2에서 @Autowired로 선언한 memberDao에 에러가 표시되었다.
intellij의 버그라는 글들이 많았고,, 임시로 @ComponentScan({"패키지명"})을 통해 임시로 해결했다.
Help->Edit Custom properties에 idea.spring.boot.filter.autoconfig=false 추가로도 해결 가능하다고 하나 나의 경우 해결되지 않았다.
@Import(다른 설정클래스.class) // 배열로 여러개 지정 가능 {a1.class, a2.class}
이 후에 스프링 컨테이너 초기화시 다른 설정클래스를 지정해 주지 않아도 된다.
주입할 객체가 꼭 스프링 빈이 아니어도 된다.
등록하지 않으면 컨테이너가 관리하지 않는다.