Spring Boot
프로젝트?
이제 막 java의 주요 개념 몇 개, 그것도 앙상한 내용으로 정리를 했건만,
갑자기 프로젝트라고 써놓으니 우습다고 생각하실 수도 있겠네요 ㅎㅎ.
뭐, 그렇다고 제가 거창한 프로젝트를 진행하려는 건 아니고, 요즘 따로 공부하고 있는
web develop
과 연동지어서 블로그를 써보는 게 좋지 않을까 하다가
간단한 사이트 하나 만들면서 포스팅하기로 마음 먹었습니다.
그리하여 오늘부터는 웹사이트 개발 프로젝트를 진행하면서 필요한 것들을 진행해보겠습니다.
프로젝트 환경
모든 프로젝트는 환경이 가장 중요하다고 생각합니다.
제 첫 사수님께 그렇게 배웠고, 실제로 개발을 진행하면서도 환경 때문에
힘들었던 게 한 두번이 아니라 이번에는 꼼꼼히 기록하면서 시작해보겠습니다.
사용할 언어
쉽게 말해 front
는 php
로 back
은 spring boot
, 즉 java
를 사용할 예정입니다.
상세 내용은 제 개인정리겸 참고용으로 기록하겠습니다.
java (jdk)
: 17.0.10spring
: 3.25- 빌드관리 :
maven 3.9.6
- 개발 tool : Visual Studio Code (vscode)
일단은 요렇게만 정리를 해놓겠습니다.
변경되는 부분이나 추가되는 것들은 바로바로 정리하겠습니다.
프로젝트 시작
제가 무엇을 만들건지 아직 말을 안 한 것 같네요.
저는 로그인이 가능하고 게시판, 댓글같은 일반적인 기능이 모두 담겨있는
블로그 형식의 사이트를 만들 예정입니다.
블로그를 쓰면서 블로그를 만드는 게 조금 아이러니 하지만,
가장 기본적인 기능을 모두 담을 수 있는 사이트가 블로그라 생각하여 정하게 되었습니다.
Sample Code 작성하기
간단하게 url'
을 호출받으면 Map
데이터를 리턴하는 코드를 작성해보겠습니다.
먼저 Controller
를 작성해보면.
1
2
3
4
@GetMapping("/apiTest")
public Map<String , Object> getApiController() {
return null;
}
key
는 String
으로,
value
는 Object
형으로 만들어진 Map
데이터를 리턴하는 컨트롤러입니다.
아직 무엇을 어떻게 retrun
할지는 작성을 안 했기에 null
로 설정했습니다.
@GetMapping('/apiTest')
를 작성하여 /apiTest로 url을 호출받으면
해당 컨트롤러가 실행 될 것입니다.
간단한 예제이니, dao
까진 작성하지 않고,
service
와 interface
정도만 작성하겠습니다.
먼저 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
을 선언시켰습니다.
RequiredArgsConstructor
은 lombok
에서 제공하는 어노테이션 중 하나로.
간단하게만 설명하자면, final
로 선언된 필드에 대해서 자동으로 초기화하는 코드가 추가됩니다.
추후에 어노테이션과 lombok
을 정리할 때 상세히 정리하겠습니다.
ApiInterface
에 작성해놓은 getApiData
의 리턴 값을 추가해주어
Controller
가 호출 받았을 때 Map
데이터를 리턴 할 수 있도록 설정 해주었습니다.
결과
이제 local 환경에서 SpringBoot 를 실행해주고
localhost:8080
에 접속하면, 결과값을 확인할 수 있습니다.