[웹 개발] Eclipse REST API 구현 - Service 생성

    728x90

    안녕하세요

    로로봉입니다 : )

    오늘은 기존에 /Info 페이지였던 InfoController를 Service로 만들어서 사용해 보도록 하겠습니다.

    우선 info 패키지에 우측 마우스를 클릭하여 New - Class를 선택해줍니다.

    [ 그림 1 : Class 선택 ]

    클래스 이름은 InfoService로 작성 후 Finish 버튼을 눌러줍니다.

    [ 그림 2 : 클래스 생성 ]

    InfoService 클래스를 아래와 같이 작성해줍니다.

    @Service
    public class InfoService {
    	
    	public Project getProjectInfo() {
    		Project project = new Project();
    		project.projectName = "restapi";
    		project.author 		= "rorobong";
    		project.createDate 	= new Date();
    		
    		return project;
    	}
    }

    [ 그림 3 : InfoService 작성 완료 ]

    @Service 를 class 어노테이션으로 달아주면 spring에서는 beanFactory 에 해당 클래스를 담아주었다가 @Autowired 를 사용하는 곳에 해당 bean 을 찾아 주입하게 됩니다.

    이제 작성한 서비스를 실행해보도록 하겠습니다.

    info 패키지에 우측 마우스를 눌러 New - Class를 선택해줍니다.

    [ 그림 4 : 클래스 추가 선택 ]

    클래스명에 Infocontroller3를 입력 후 Finish 버튼으로 클래스를 만들어 줍니다.

    [ 그림 5 : InfoController3 클래스 생성 ]

    InfoController3를 아래와 같이 작성해 줍니다.

    @Slf4j
    @RestController
    public class InfoController3 {
    
    	private InfoService infoService;
    	
    	@Autowired  // spring 4.3 버전 이상부터는 생략 가능
    	public InfoController3(InfoService infoService) {
    		this.infoService = infoService;
    	}	
    	
    	@GetMapping("/info3")
    	public Object peopleList() {
    		log.debug("/peopleList start");
    		Project project = infoService.getProjectInfo();
    		return project;
    	}
    }

    @Autowired를 생성자에 선언함으로써 Spring에서 생성자에 InfoService 서비스를 주입하게 됩니다.

    해당 방법은 생성자 주입 방법으로 아래 4가지 장점이 있습니다.

    1) 순환참조 방지 : A가 B를 참조하고 B가 A를 참조할 때의 문제
    2) 테스트하기에 좋음
    3) final 선언 가능
    4) 오류 방지 : 불변 객체(final) 또는 null 방지 가능

    [ 그림 6 : InfoController3 클래스 작성 완료 ]

    이제 빌드 후 실행해보면 서비스에 등록된 정보가 표시되는 것을 볼 수 있습니다.

    [ 그림 7 : 실행 결과 ]

     

    실제 REST API를 구현할 때 여러가지 서비스를 만들어야하는데 위의 구조대로 만들어주면 됩니다.

     

    공감 ♥ + 구독 부탁드립니다 : )

    728x90
    반응형

    댓글