컴포넌트 스캔을 이용한 방법 ( @Component, @Controller... )
특정 클래스를 개발하고 선언부 바로 위에 @Component라는 것을 달아주면 스프링은 알아서 해당 클래스를 빈으로 등록한다. 그리고 우린 필요한 곳에서 주입해서 쓰면 된다.
자바코드로 설정하는 방법 ( @bean 활용 )
자바코드로 설정하는 것은 설정파일을 만들어야 한다. 설정파일을 만들면 좋은 점은 의존성을 여러가지를 두고 교차로 사용하고 싶을 때 해당 파일 하나만 수정하면 된다는 장점이 있다.
@Controller
public HomeController{
....
}
-----------------------------------------------------
@Service
public HomeService{
.....
}
@Configuration
public SpringConfig {
@Bean
public homeService(){
return new HomeService();
}
}
필드주입은 지양하는 분위기인데 테스트코드 같은 곳에선 편하게 쓰면 될 것 같다.
public class HomeController {
@Autowired
MemberService memberService;
}
세터주입은 말 그대로 세터를 사용하는 건데 특수한 경우가 아니면 이것도 그다지 많이 쓰지는 않는다고 한다.
public class HomeController {
HomeService homeService;
@Autowired
public void setService(HomeService homeService) {
this.homeService = homeService;
}
}
생성자 주입이 가장 많이 쓰인다. 내 생각에도 가장 일반적이고 깔끔한 느낌이 든다. 사실 난 필드주입 쓰고싶다.
public Class HomeController{
HomeService homeService;
@Autowired
public HomeContorller (HomeService homeService){
this.homeService = homeService;
}
}