본문 바로가기
Framework/SpringBoot

SpringBoot 프로젝트(1) - SpringBoot, Spring Security, Gradle, MySQL을 이용한 프로젝트 생성

by 댓츠굿 2018. 12. 2.


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!!








반응형