개발자

spring autowired 사용에 관해 질문드립니다.

2024년 03월 01일조회 121

@Configuration public class ControllerConfig { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(MemberConfig.class); @Bean public SearchController serachController() { return new SearchController(ac.getBean("memberDao", MemberDao.class)); } } ------------------------------------------------------------------------------------ @Configuration public class ControllerConfig { @Autowired private MemberDao memberDao; @Bean public SearchController serachController() { return new SearchController(memberDao)); } } autowired 사용을 지양하고, 생성자 주입을 사용하는게 좋다고 들었는데 설정 클래스에서는 생성자 주입이 안되는데 위 코드 중 어느 방식으로 코딩하는게 맞는 방식일까요? 혹시 위 방식 말고 다른 방식이 있다면 알려주시면 감사하겠습니다.

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 1

인기 답변

profile picture

익명

작성자

2024년 03월 01일

생성자 주입 사용을 권장하는 가장 큰 이유 중 하나로 테스트 용이성과 코드 가독성 향상 등이 있습니다. `@Autowired` 대신 생성자Injection을 사용할 수 있는 `@Configuration` 클래스 예시를 아래에 제시해드리겠습니다: ```java @Configuration public class ControllerConfig { private MemberDao memberDao; public ControllerConfig(MemberDao memberDao){ this.memberDao = memberDao; } @Bean public SearchController serachController() { return new SearchController(memberDao); } } ``` 위의 코드는 `@Configuration` 클래스 내에서 생성자를 사용한 역할을 합니다. 또한, 이 방식은 Spring 4.3부터 `@Autowired`를 생략할 수 있게 해줍니다. 단, 이 경우 `MemberDao`가 스프링 빈으로 등록되어 있는지 확인해야합니다. gpt 답변으로 해결했습니다.

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로
키워드로 질문 모아보기

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!