
Base Package 아래에 Service 패키지 생성 → Service 패키지에 Service 인터페이스 생성 → Service 패키지 아래에 Implement 패키지 생성 → Implement 패키지에 Service 구현 클래스 생성
@RestController
@RequestMapping("/service")
public class ServiceController {
// 잘못된 예시
// BasicServiceImplement service = new BasicServiceImplement();
// 인터페이스에 의존하고 있다
private BasicService basicService = new BasicServiceImplement();
@GetMapping("")
public ResponseEntity<String> getService() {
return basicService.getService();
};
}
public interface BasicService {
ResponseEntity<String> getService();
}
public class BasicServiceImplement implements BasicService{
@Override
public ResponseEntity<String> getService(){
return ResponseEntity.status(HttpStatus.OK).body("서비스 호출");
}
}
@Service@Component와 동일하지만 가독성 향상을 위해 Service이름을 사용//Service 어노테이션
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Service {
/**
* Alias for {@link Component#value}.
*/
@AliasFor(annotation = Component.class)
String value() default "";
}
@Service //@Component가 포함되어 있다.
public class BasicServiceImplement implements BasicService{
@Override
public ResponseEntity<String> getService(){
return ResponseEntity.status(HttpStatus.OK).body("서비스 호출");
}
}
@AutoWired등록된 Spring Bean을 제어 역전을 통해 의존성 주입을 할 수 있도록 하는 어노테이션
경로: Base > controller > ServiceController.java
@RestController
@RequestMapping("/service")
@AllArgsConstructor
public class ServiceController {
private BasicService basicService; //필수
//생성 방법
//1. 필드 객체
//2. Setter 메서드 사용
//3. 생성자 이용
@GetMapping("")
public ResponseEntity<String> getService() {
return basicService.getService();
};
}
@Autowired
private BasicService basicService;
private BasicService basicService;
@Autowired
public void setBasicService(BasicService basicService){
this.basicService = basicService;
}
private BasicService basicService;
//@Autowired
public ServiceController(BasicService basicService){
this.basicService = basicService;
}
private BasicService basicService; 해당 구문은 작성 하지만 생성자 같은경우는 Lombok을 이용하여 생성이 가능하다.final을 통해 @RequiredArgsConstructor 을 통한 생성자 활용 (응용 -> 특정 생성자)public interface BasicService {
ResponseEntity<String> getService();
}
