프로그래머스 스진초 과제를 진행하면서 작성한 내용입니다.
이전에 구현했던 Controller에 Service와 Repository를 추가 구현해보자.
구현할때는 DI를 활용해서 Controller -> Service -> Repository -> Service -> Controller 흐름으로 동작하게 해보자.
참고로, 스프링에서는 @Component를 통해 스프링빈으로 등록이 되어있어야 DI를 해줄 수 있다.
Controller
, Service
, Repository
가 어떻게 DI가 가능한지 확인해보자.
@RestController
public class DemoController {
@Autowired
private DemoService service;
@GetMapping("/test")
public String find(){
return service.find();
}
}
Controller
에서는, @RestController에 비밀이 있다. @RestController는 @Controller를 적용하고 있고, @Controller는 @Component를 적용하고 있다. 그래서 ComponentScan에 의해 DemoController가 스프링 빈으로 등록이 될 수 있는것이다.@Service
public class DemoService {
@Autowired
private DemoRepository repository;
public String find(){
return repository.find();
}
}
Service
에서는, @Service에 비밀이 있다. @Service는 @Component를 적용하고 있다. 그래서 ComponentScan에 의해 DemoController가 스프링 빈으로 등록이 될 수 있다.@Repository
public class DemoRepository {
public String find() {
return "TEST";
}
}
Repository
에서는, @Repository에 비밀이 있다. @Repository는 @Component를 적용하고 있다. 그래서 ComponentScan에 의해 DemoController가 스프링 빈으로 등록이 될 수 있다.