Post

Spring Boot

프로젝트?

이제 막 java의 주요 개념 몇 개, 그것도 앙상한 내용으로 정리를 했건만,
갑자기 프로젝트라고 써놓으니 우습다고 생각하실 수도 있겠네요 ㅎㅎ.

뭐, 그렇다고 제가 거창한 프로젝트를 진행하려는 건 아니고, 요즘 따로 공부하고 있는
web develop과 연동지어서 블로그를 써보는 게 좋지 않을까 하다가
간단한 사이트 하나 만들면서 포스팅하기로 마음 먹었습니다.

그리하여 오늘부터는 웹사이트 개발 프로젝트를 진행하면서 필요한 것들을 진행해보겠습니다.

프로젝트 환경

모든 프로젝트는 환경이 가장 중요하다고 생각합니다.
제 첫 사수님께 그렇게 배웠고, 실제로 개발을 진행하면서도 환경 때문에
힘들었던 게 한 두번이 아니라 이번에는 꼼꼼히 기록하면서 시작해보겠습니다.

사용할 언어

쉽게 말해 frontphpbackspring boot, 즉 java를 사용할 예정입니다.
상세 내용은 제 개인정리겸 참고용으로 기록하겠습니다.

  1. java (jdk) : 17.0.10
  2. spring : 3.25
  3. 빌드관리 : maven 3.9.6
  4. 개발 tool : Visual Studio Code (vscode)

일단은 요렇게만 정리를 해놓겠습니다.
변경되는 부분이나 추가되는 것들은 바로바로 정리하겠습니다.

프로젝트 시작

제가 무엇을 만들건지 아직 말을 안 한 것 같네요.
저는 로그인이 가능하고 게시판, 댓글같은 일반적인 기능이 모두 담겨있는
블로그 형식의 사이트를 만들 예정입니다.

블로그를 쓰면서 블로그를 만드는 게 조금 아이러니 하지만,
가장 기본적인 기능을 모두 담을 수 있는 사이트가 블로그라 생각하여 정하게 되었습니다.

Sample Code 작성하기

간단하게 url'을 호출받으면 Map 데이터를 리턴하는 코드를 작성해보겠습니다.

먼저 Controller를 작성해보면.

1
2
3
4
@GetMapping("/apiTest") 
	public Map<String , Object> getApiController() {
		return null;
	}

keyString으로,
valueObject형으로 만들어진 Map데이터를 리턴하는 컨트롤러입니다.
아직 무엇을 어떻게 retrun할지는 작성을 안 했기에 null로 설정했습니다.


@GetMapping('/apiTest')를 작성하여 /apiTest로 url을 호출받으면
해당 컨트롤러가 실행 될 것입니다.
간단한 예제이니, dao까진 작성하지 않고,
serviceinterface정도만 작성하겠습니다.

먼저 ApiService라는 package를 생성한 뒤 그 안에 ApiInterface를 생성하여
코드를 작성해보겠습니다.

1
2
3
4
5
@Configuration
@PropertySource("classpath:application.properties")
public interface ApiInterface {
	Map<String, Object> getApiData();
}

getApiData()라는 interface를 생성하였습니다.
이제 ApiInterface를 상속 받는 클래스들은 gatApiData()를 선언하여
기능을 구현해야 합니다.


다음으로는 ApiInterface를 상속받을 impl을 작성하겠습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@Service
public class ApiServiceImpl implements ApiInterface {
	
	@Override
	public Map<String, Object> getApiData() {
		
		Map<String, Object> apiData = new HashMap<>();
		
		apiData.put("data1", "testData1");
		apiData.put("data2", "testData2");
		apiData.put("data3", "testData3");
		
		
		return apiData;
	}
}

interface에 선언만 한 getApiData의 기능을 선언해주었습니다.
Map데이터를 생성하여 데이터를 넣어주고 리턴하는 간단한 코드입니다.

이제 기능까지 만들었으니 controleer로 다시 돌아가 보겠습니다.
url로 호출받았을 때 실행할 기능은 완성되었으니,
ApicContorller를 수정해보면.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package com.example.demo.controller;

import java.util.Map;

@RestController
@RequiredArgsConstructor
public class ApiController {
	
	@Autowired
	private final ApiInterface apiInterface;
	
	@GetMapping("/apiTest") 
	public Map<String , Object> getApiController() {
			
		
		return apiInterface.getApiData();
	}
}

@RequiredArgsConstructor를 선언하여 ApiInterface을 선언시켰습니다.
RequiredArgsConstructorlombok에서 제공하는 어노테이션 중 하나로.
간단하게만 설명하자면, final로 선언된 필드에 대해서 자동으로 초기화하는 코드가 추가됩니다.
추후에 어노테이션과 lombok을 정리할 때 상세히 정리하겠습니다.

ApiInterface에 작성해놓은 getApiData의 리턴 값을 추가해주어
Controller가 호출 받았을 때 Map 데이터를 리턴 할 수 있도록 설정 해주었습니다.

결과

이제 local 환경에서 SpringBoot 를 실행해주고
localhost:8080에 접속하면, 결과값을 확인할 수 있습니다.

This post is licensed under CC BY 4.0 by the author.