SpringBoot, Spring Security, Gradle, MySQL을 이용한 프로젝트 생성
Spring과 SpringBoot 환경에서 개발을 해왔지만, 개인적으로 좀 더 공부하고 싶어 글을 올리게 되었습니다. 부족하지만 유익한 내용이 되었으면 합니다.
개발환경
ㆍOS : Windows 10
ㆍJava8
ㆍSTS 3.9.5
ㆍspringBoot 2.0.4
ㆍGradle 2.2.1
프로젝트 생성 전 선작업
'Buildship Gradle Integration' 설치하기
1) STS - Help - Eclipse Marketplace 를 클릭
2) 입력란에 'gradle'을 입력하여 솔루션 검색
3) Buildship Gradle Integration 2.0을 [install] 버튼 클릭하여 설치
4) 이클립스 재시작
스프링부트 프로젝트 생성하기
1. Package Explorer에서 오른쪽 마우스를 클릭 - New - Spring Starter Project 를 차례대로 클릭하여 신규 스프링부트 프로젝트를 생성합니다.
2. Name, Type, Group, Package 등을 입력합니다.
Type에는 Gradle과 Maven을 선택할 수 있는데, 여기서는 Gradle을 선택하겠습니다.
참고로, Group, Package명을 같게 하세요.
다 입력 한 후 하단에 Next 버튼을 클릭합니다.
3. Dependencies 설정
1) Spring Boot Version : 저 같은 경우 기본으로 2.0.4로 잡혀있었으나 다른 버전으로 선택 가능합니다.
2) 플러그인 추가
▶ 표시가 있는 목록을 클릭하여 펼쳐보면, 여러가지 선택할 수 있는 옵션들이 나오는데 원하시는 플러그인
항목을 선택하세요. 그럼 오른쪽 Selected: 란에 선택된 플러그인 항목이 보여집니다.
저는 다음과 같이 6개의 플러그인을 선택하였습니다.
-> Security, Lombok, JPA, MySQL, H2, Web
4. 아래와 같은 창이 나오면, 하단의 Finish 버튼을 클릭하여 프로젝트를 생성합니다.
5. build.gradle 을 더블클릭 하면, 아래와 같이 기본적인 설정을 볼 수 있습니다.
또한, 3번에서 선택했던 플러그인들이 dependencies에 설정되어 있는 것을 볼 수 있습니다.
나중에 dependencies{...}에 다른 플러그인들도 추가할 수 있습니다.
6. 아래과 같이 간단한 DemoController.java를 만들어주세요.
@RequestMapping이나 @getMapping 어노테이션을 이용하여 요청할 URL을 만들고, String 값으로 return 합니다.
아래는 컨트롤러 코드 입니다. 필요한 부분만 복사하세요.
package com.demo; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class DemoController { @RequestMapping("/demo") public String demo() { return "HelloWorld"; } }
|
여기에서 @RequestMapping이나 @GetMapping을 사용하여 컨트롤러 메소드와 매핑할 수 있습니다.
@RequestMapping : URL을 컨트롤러의 메소드와 매핑할 때 사용하는 annotation 입니다.
@GetMapping : HTTP GET 요청을 특정 핸들러 메소드에 맵핑하기 위한 주석 입니다.
특히 @GetMapping은 @RequestMapping (method = RequestMethod.GET)의
바로 가기 역할을 하는, 즉 @RequestMapping의 축약된 annotation 입니다.
아래는 기본적으로 생성된 DemoApplication.java 파일 입니다. 수정은 하지 않으셔도 됩니다.
7. application.properties에 기본적으로 로그인 할 name과 password를 추가합니다.
spring.security.user.name=default
spring.security.user.password=1234
3번에서 dependencies 항목 중 Security를 선택하여서 name과 password를 application.properties에 설정해주었습니다.
8. 프로젝트를 오른쪽 마우스 클릭 - Run As - Spring Boot App을 클릭하여 서버를 기동합니다.
그럼 아래와 같이 Tomcat started on port(s): 8080 으로 started 된 것을 볼 수 있습니다.
9. 인터넷 창에서 http://localhost:8080/demo를 쳐 보세요. 그럼 아래와 같은 로그인 페이지로 이동합니다.
이는 3번에서 기본 Dependency 항목에 Spring Security를 넣어서 그런 것 같습니다.
7번에서 application.properties에 설정한 name과 password를 입력합니다.
그럼 아래와 같은 화면이 뜨는데, 이는 Spring Security에서 로그인 한 후의 어느 화면으로 이동할지 설정을 안해줘서 그렇습니다. 추후에 뒷편에서 설정하는 법을 알려드리겠습니다.
위 화면을 무시하시고 인터넷 창에서 http://localhost:8080/demo를 다시 쳐 보세요. 그럼 아래와 같이 HelloWorld를 볼 수 있습니다.
간단한 예제를 성공하였습니다! 곧 다음편도 올리겠습니다. 여기까지 읽어주셔서 감사합니다.
이 예제소스는 https://github.com/boniato/demo_project 에서 볼 수 있습니다.
여담)
application.properties 에 아무 설정도 하지 않고 서버를 기동하니 아래와 같이 name과 password가 콘솔에 찍혔습니다.
그래서 콘솔에 찍힌 name과 password를 아래와 같이 입력하였더니, 아래와 같이 로그인이 안되었습니다. 이유는 none!!
'Framework > SpringBoot' 카테고리의 다른 글
[SpringBoot] Java를 Kotlin으로 변환하기(Convert Java to Kotlin) (0) | 2019.09.26 |
---|---|
[SpringBoot] REST API Return XML Response (0) | 2019.05.11 |
SpringBoot 프로젝트(2) - STS에서 GitHub로 프로젝트 올리기 (0) | 2018.12.02 |