개발 정보/웹개발

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

RoRoBong 2022. 5. 26. 08:55
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
반응형