[Github/Eclipse] SpringBoot 프로젝트 : 이클립스 프로젝트 깃허브 연결 / SpringBoot 환경설정 / 환경변수 설정(DB, API KEY 등)
목적
- SpringBoot로 팀 프로젝트 진행 시 했던 깃허브 연결 방법 정리
- 깃 repository 생성부터 SpringBoot 기본 설정 등 정리
[Github - Repository 생성]
우선 깃허브 로그인을 한다. 없으면 가입하기
좌측 상단에 보면 위와 같이 New 버튼이 있다. 클릭
이런 화면으로 이동이 된다. 각 번호별 설명을 하자면 다음과 같다.
- repository 이름 설정 : 원하는 이름으로 설정하면 됨.
- 공개여부 : repo 공개여부로, 초대된 회원과 본인만 볼 수 있음(private) OR 모두공개(public)
- 깃 동기화 시 무시할 파일 지정 : 이건 굳이 코드 업로드 할 때 같이 올라갈 필요 없는 파일이나 폴더 등을 설정 가능한데, none으로 두고 따로 설정해도 되고 주로 사용하는 언어가 있으면 미리 선택해도 된다(미리 선택하면 러프하게 생성해주는 듯 하다). 난 이클립스로 자바 코딩을 주로 했으므로 java로 설정
- 라이센스 선택 : 잘 모르겠다. Github docs를 보니 라이센스가 없으면 기본 저작권법이 적용되고 어쩌고 써있다..(나중에 필요성을 느끼면 읽어보는걸로)
- 생성
생성하고 나면 위와 같이 repository가 생성된게 보인다.
.gitignore 클릭
저기 연필모양을 클릭하면 수정할 수 있다. 클릭
SpringBoot 프로젝트 폴더와 연동하는데 target 이하의 파일들은 공유되면 안된다고 했다.
그래서 target/ 해서 target 폴더 이하는 동기화되지 않도록 설정 해줬다.
[Github - 그룹원 초대]
이제 같이 팀프로젝트를 진행할 사람들을 초대해보자.
상단에 메뉴에서 Settings 클릭
왼쪽에 보면 Collaborators가 있다. 클릭
그럼 화면 중앙쯤에 위와 같은 배너가 있다. Add people 클릭
클릭 후 나온 창에 이메일 검색하는 텍스트 박스가 있다.
거기에 초대하고 싶은 사람 이메일을 입력하면 하단에 이메일이 검색되어 나온다.
초대하고 싶은 사람이 맞으면 클릭한다.
위와 같이 초대하고 싶은 사람 이메일이 파란색으로 뜨고 아래 추가 버튼에 불이 들어온다. 클릭
한명씩 초대 가능..
이렇게 하면 깃허브에 repository를 생성하고 생성한 repo에 공유할 팀원들을 초대하는 것까지 됐다.
[SpringBoot 프로젝트 생성]
이제 SpringBoot 프로젝트를 생성해보자.
Package Explorer에 우클릭 - New - Spring Starter Project 클릭
이런 창이 나오는데, 원하는 설정 대로 적용 후 Next>
여기서는 SpringBoot 프로젝트 버전을 선택해주고, 필요한 dependency들을 검색해서 선택해준다. Finish
[SpringBoot 프로젝트 생성 - pom.xml 설정]
설정에 대해서는 나도 자세히 모르겠다. 원하는 버전이 있으면 아까 설정창에서 설정한 버전 말고 pom.xml에서 바꿔줄 수 있다.
난 어떠한 이유(?)로 2.7.2 버전으로 바꿔 사용했다.
또 필요한 dependency가 있으면 다음과 같이 추가해주면 된다.
실시간 채팅 기능을 만들거라 웹소켓을 추가했다.
[SpringBoot 프로젝트 생성 - yml 설정]
이제 yml 파일을 만들어 준다.
원래 기본적으로 application.properties가 있을텐데, 같은 위치에 확장자를 yml로 해서 하나 만들어주면 된다.
yml파일로 설정하는게 훨씬 직관적이고 설정이 편하다.
오라클DB를 사용해서 위와 같이 설정해줬다.
아래 커넥션 풀에 대한 설명은 다음과 같다.
- connection-timeout: 30000 → 클라이언트가 pool에 connection을 요청하는데 기다리는 최대시간을 설정 30초
- maximum-pool-size: 10 → 최대 커넥션 개수 설정
- max-lifetime: 1800000 → 커넥션 풀에서 살아있을 수 있는 커넥션의 최대 수명시간 1,800초(30분)
※ 근데 yml 파일도 .gitignore에 등록하지 않는 한 같이 깃허브에 커밋된다. 위와 같은 방법으로 하면 깃허브에 그냥 주소, 아이디, 비밀번호가 그냥 올라가는 셈.. 관련 내용은 마지막에 좀 더 추가하겠다.
추가로 아래와 같은 설정도 넣었다.
저 test.test에는 src/main/java 하위에 들어가는 패키지명이 들어간다(ex. test.test.main.controller / test.test.admin.dao / test.test.board.service 등).
이렇게 적어줘야 mybatis가 찾아간다.
[SpringBoot 프로젝트 생성 - webapp]
이제 webapp 하위에 필요한 폴더들을 생성해준다.
image_bundle, image_upload 등 파일을 생성했다.
tiles를 사용했기 때문에 참여 팀원마다 따로 xml파일을 만들어줬다(합쳐서 쓰면 충돌날 가능성 높음).
[SpringBoot 프로젝트 생성 - static]
이제 resources 폴더 하위에 static 폴더를 생성해준다.
이 폴더에는 보통 css 파일, js 파일 등 정적 파일 등을 저장하는데 쓴다.
[SpringBoot 프로젝트 생성 - config]
이제 인터셉터나 타일스 설정 등에 대한 환경설정을 자바에서 할 수 있게 config 파일을 만들어준다.
필요한 설정을 아래와 같이 해준다.
[SpringBoot 프로젝트 생성 - main]
이제 main 컨트롤러를 만들어 준다.
그리고 이런식으로 뭐 메인으로 연결되도록 매핑을 적어주면 끝이다.
[SpringBoot 프로젝트 - 깃연결]
이제 생성한 프로젝트를 깃에 연결해보자.
우측 상단에 저 아이콘을 누른다(Open perspective).
없으면 아래와 같이 한다.
Git을 찾아 클릭 후 하단에 Open.
Repository를 복제하기 전에 깃허브에서 링크를 복사해 와야 한다.
생성한 Repository에 들어가서 메인 화면을 보면 중앙 상단에 <>Code라고 된 부분이 있다.
클릭 후 위에 빨간 동그라미 부분을 누르면 복사가 된다.
다시 이클립스로 돌아와서 아까대로 Git을 누른 후 Open 하면 창이 새로 바뀌면서 좌측에 Git repositories 창이 생긴다.
우클릭 후 Clone a Git Repository... 을 클릭한다.
이런 창이 뜨는데 위에 URI에 붙여넣기 하면 알아서 다 채워진다(아마 복사해왔으면 창 열자마자 다 쓰여 있을 거다).
다음 누르고 Finish
그럼 위와 같이 생성된 모습을 볼 수 있다.
[SpringBoot 프로젝트 - 깃 프로젝트 연결]
마지막으로 아까 생성한 프로젝트와 이 repository를 연결하면 된다.
다시 Package Explorer로 돌아와서 아까 생성한 프로젝트에 우클릭한다.
아래쪽에 보면 Team이 있다. Team - Share Project...을 클릭
Git 클릭 Next>
위에 repository에서 생성한 프로젝트 선택하면 끝이다.
단, 서버가 실행중인 상태에서 이렇게 연결할 경우 오류가 날 수 있다. 서버는 모두 종료해둔 상태에서 진행하자.
[프로젝트 받기]
이렇게 repository에 생성한 프로젝트가 올라왔다면, 해당 프로젝트를 공유 받는 사람은 어떻게 해야하는지 보자.
위와 똑같이 이클립스에서 Git Repository를 열어주고, 초대 받은 repository에 들어가 링크를 복사해온다.
그럼 위와 같이 복제된 repository가 생길텐데 우클릭한다.
빨간 네모 표시된 Import Projects...를 눌러준다.
아마 자동으로 경로가 import source에 매핑되서 나올것이다.
Spring Maven 설정이 되어있는 프로젝트라면 Maven linkPC라고 폴더가 하나 더 뜰텐데(이건 테스트라 없음), 있으면 Maven만 체크 후 Finish를 누르면 된다.
Package Explorer를 다시 보면 생성된 프로젝트가 보일 것이다.
[SpringBoot 프로젝트 - yml 환경변수 사용]
아까 위에서 yml 설정 시 중요 정보들도 ignore 해놓지 않는 한 깃에 올라가 위험할 수 있다고 했다.
그냥 ignore 등록해둬도 되지만 아마 그럼 yml 수정할 때 팀원 다같이 각자 로컬에서 수정해야될지도..
기본 설정들은 그냥 올라가도 되지만 위에서 처럼 DB 설정간 아이디, 비밀번호 등을 적어야 하거나 이메일 인증 처리를 위해 계정 정보를 등록해 놓는다거나 할 때, 이 정보들이 깃허브에 그대로 올라가면 피해를 볼 수 있다.
이럴 때 yml 파일에 환경변수를 통해 값을 넣어주면 조금은 안전하게 설정값을 등록할 수 있다.
※작은 프로젝트라도 깃헙에 올릴 땐 환경변수를 사용하자.. 이게 완전한 해결책인진 모르겠지만..
이메일 인증 기능 만들 때 작성했던 것을 예로 사용 방법을 알아보자.
yml파일에 이메일 인증 기능을 구현할경우 위와 같이 보내는 이메일 관련 설정을 등록해줘야 한다.
이때 이메일을 보낼 계정의 아이디와 비밀번호가 필요한데, 그냥 그대로 적는 것이 아니라 위와 같이 적으면 된다.
${원하는 변수명} 형태로 적으면 yml에서 할 일은 끝이다.
이제 이 변수에 값을 넣는 방법을 알아보자.
Package Explorer에서 해당 프로젝트 우클릭 - Run As - Run Configurations...를 누른다.
새로 창이 뜨는데 상단의 메뉴에서 Environment를 누르면 위와 같은 화면이 나온다.
오른쪽에 Add...를 눌러서 Name에 아까 yml에 적었던 변수명을 적고(${}이거 빼고), Value에 그 변수에 들어갈 값을 넣어주면 된다.
설정이 완료 됐으면 Apply를 누르고 화면을 닫은 뒤 서버를 실행시키거나, Run을 누르면 된다.
[SpringBoot 프로젝트 API KEY - yml 환경변수 사용]
yml에서 설정해야하는 것 말고도 API key 같은 것을 환경변수로 yml에 등록해서 사용할 수 있다.
노출되면 안되는 key니까 다음과 같이 하면 도움이 될 것이다.
yml 파일에 사용하고자 하는 API key를 다음과 같이 정의한다.
값 등록은 위에서와 똑같이 환경변수 설정에 들어가서 Name과 Value에 값을 넣어준 뒤 Apply하면 된다.
이제 이 값을 다른 곳에서 불러 사용해야 하는데 그 방법은 다음과 같다.
@Value() 안에 ${}을 적고, 위에 적은 계층대로 온점으로 구분해 써주면 해당 값을 불러와서 java 내에서 사용할 수 있다.
나만 알고 싶은 변수.. 이렇게 쓰면 된다.