개발자
@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 사용을 지양하고, 생성자 주입을 사용하는게 좋다고 들었는데 설정 클래스에서는 생성자 주입이 안되는데 위 코드 중 어느 방식으로 코딩하는게 맞는 방식일까요? 혹시 위 방식 말고 다른 방식이 있다면 알려주시면 감사하겠습니다.
답변 1
인기 답변
익명
작성자
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 답변으로 해결했습니다.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
지금 가입하면 모든 질문의 답변을 볼 수 있어요!