사이먼's 코딩노트

[SpringBoot] Java Spring Boot 본문

Java/SpringBoot

[SpringBoot] Java Spring Boot

simonpark817 2024. 5. 3. 11:59

[스프링 부트 (SpringBoot)]

  • Spring Boot는 웹 프로그램을 쉽고 빠르게 만들 수 있도록 도와주는 자바의 웹 프레임워크이다.
  • Spring Boot는 Spring 프레임워크에 톰캣(Tomcat)이라는 서버를 내장하고 여러 편의 기능들을 추가하여 개발자들 사이에서 꾸준한 인기를 누리고 있다.
  • 여기서 톰캣은 클라이언트의 요청을 해석하여 그에 맞는 자바 프로그램을 실행한 후 그 결과를 응답해주는 웹 애플리케이션 서버를 뜻한다.
  • 웹 프레임워크를 사용했을 때의 장점은 쿠키나 세션 처리, 로그인/로그아웃 처리, 권한 처리 등과 같은 여러가지 기능들을 개발자가 일일이 구현할 필요가 없고, 프레임워크에 있는 기능을 익혀서 사용하기만 하면된다.
  • 다시 말해, 웹 프레임워크는 웹 프로그램을 만들기 위한 스타터 키트라고 생각하면 좋다.

 

[Spring과 Spring Boot의 차이점]

  • Spring은 스프링 프레임워크의 핵심 모듈을 모아서 만든 프레임워크이다.
  • Spring에서는 개발자가 직접 설정 파일을 작성하여 스프링 컨테이너를 구성하고, 필요한 빈 객체를 등록하고, 빈 객체 간의 의존성을 설정해야한다.
  • Spring은 특정한 구성을 위해 추가적인 라이브러리와 같은 설정이 필요하다.
  • Spring Boot는 스프링 프레임워크를 보다 쉽게 사용할 수 있도록 만든 프레임워크이다.
  • Spring Boot에서는 개발자가 설정 파일을 작성할 필요없이, 프로젝트의 설정과 라이브러리 의존성을 자동으로 처리해주는 기능을 제공하며, 실행 가능한 JAR 파일을 만들 수 있다.
  • Spring Boot는 Spring에서 제공하는 여러 기능들을 자동으로 설정하여 개발자가 보다 쉽게 사용할 수 있도록 한다.

   

[Spring Boot를 이용한 프로젝트 생성]

  • 이번에는 실제로 Spring Boot를 이용한 Java 프로젝트를 생성하는 방법을 소개한다.
  • 필자는 start.spring.io를 통해서 Spring Boot 기반의 프로젝트를 생성하려한다.
  • 참고 URL : https://start.spring.io/
  • 해당 홈페이지에 들어가면 신규 프로젝트 생성에 앞서 기본 프로젝트의 설정과 필요한 라이브러리 의존성을 선택하여 자동으로 처리해주고, 실행 가능한 압축파일을 생성한다.

start.spring.io를 통한 기본 세팅

 

  • 위 그림에서 필자가 선택한 Dependencies에 대해서 몇 가지 부연설명을 하자면 아래와 같다.
  • Spring Boot DevTools은 말 그대로 스프링 부트 개발 도구이며, 개발 단계에서 자동으로 다시 로드되는 기능을 제공하여 개발자가 변경사항을 신속하게 확인할수 있도록 도움을 주고, Live Reloading이나 properties 변경 감지 및 자동 재시작과 같은 기능도 제공한다.
  • lombok은 Getter와 Setter를 활용하기 위한 라이브러리이고, MariaDB Driver는 DB를 사용하기 위한 드라이버이다.
  • Spring Web은 HTTP 방식으로 입력을 받을 수 있게 해주고, 이를 통해 특정 컨트롤러의 액션을 실행할 수 있게 해주는 역할을 한다.
  • Spring Security는 Spring에서 제공하는 인증과 인가에 대한 처리를 위임하는 별도의 프레임워크이다. 여기서 인증은 로그인을 의미하고, 인가는 서버가 로그인한 사용자를 보고 허가하는 것을 의미한다. 권한은 인증된 사용자가 어떤 기능을 할 수 있는지를 의미하고, 기본적으로 로그인, 권한 설정, 권한 검사 등의 기능을 제공한다.
  • Spring Data JPA는 ORM의 기술 중 하나로서 ORM이란 객체 지향 모델과 데이터베이스 모델을 서로 연결하고, 객체 지향 언어와 관계형 데이터베이스 간의 데이터를 변환하고 상호 작용하기 위한 기술이다. ORM 프레임워크를 사용하면 DB와의 상호 작용이 쉽고 효율적으로 처리가 가능하며, 유지보수 및 확장이 간편하다.
  • Thymleaf는 웹 애플리케이션 개발을 위한 서버 측의 템플릿 엔진이다. HTML, XML, JavaScript, CSS 및 일반 텍스트와 같은 다양한 종류의 템플릿을 처리하고 주로 스프링 프레임워크와 통합하여 사용한다. JAR 패키징이 가능하고, WAS 없이도 브라우저에 직접 띄울 수 있어서 편리하다는 장점이 있다.
  • 이렇게 필요한 라이브러리를 모두 선택한 다음, 하단의 GENERATE를 선택하면, 설정한 프로젝트 명에 맞게 압축파일이 하나 생성된다.
  • 생성된 압축파일은 압축을 해제한 후, Intellij에서 해당 프로젝트를 Open하면 프로젝트 생성이 완료된다.

 

[localhost를 통한 웹 서비스 실행하기]

  • 프로젝트 생성을 마쳤다면, 이번에는 몇 가지 기본 세팅을 통해 직접 localhost를 통해 웹 브라우저가 잘 동작하는지 확인해보려 한다.
  • 먼저, DB 접속을 해서 해당 프로젝트와 관련된 Database를 생성해준다.
  • 그 다음은, 생성된 프로젝트의 src\main\resource 경로를 보면 application.properties 파일이 있는데 설정하기 전에 해당 파일의 이름을 application.yml로 변경한다.
  • properties와 yml의 내부 구조에 차이가 있다. properties의 경우, 각 코드의 줄마다 key = value의 형태로 이루어져 있고 yml의 경우, 들여쓰기로 구분되는 계층 구조 및 key: value의 형태로 이루어져 있다. 그렇기 때문에 yml 형식으로 작성할 때는 항상 들여쓰기를 유의해야한다.
  • 파일의 확장자를 변경했다면, 이제 웹 포트를 설정하고, DB의 정보를 application.yml에 작성해준다.
server:
  port: 8090
spring:
  datasource:
    driver-class-name: org.mariadb.jdbc.Driver
    url: jdbc:mariadb://localhost:3306/sbb_dev
    username: root
    password:
  • 현재는 자체 PC에서 프로젝트를 실행하기 때문에 따로 서버의 주소가 포함되지 않고 localhost를 사용한다.
  • 여기서 말하는 port는 웹 포트번호로, 웹 브라우저 접속 시 입력해야하는 포트번호이다.
  • 지금과 같이 포트번호를 8090으로 설정했다면, 웹 브라우저에서는 Spring Boot가 실행되면 localhost:8090을 입력했을 때 웹 접속이 가능하다.
  • 아래는 DB에 대한 설정이다. sbb_dev라는 DB를 로컬에서 생성하였고, username이 root이기 때문에 password는 비워져있다.
  • DB가 계속 연결되어 있다는 가정 하에 이제 프로젝트를 실행하게 되면 아래 그림처럼 콘솔창에 Spring 화면이 나오게되고, 웹 브라우저를 통해 로컬 웹 서버에 접속할 수 있게된다.
  • 최초 접속했을 때 나타나는 로그인 화면에서 ID는 user이고, PW는 Java 콘솔창에 나타난다.
  • 앞으로 Spring Boot를 활용하여 웹 페이지를 하나씩 만들어가봅시다.

Spring Boot 시작

 

localhost:8090을 통한 웹 접속

 

[깃허브 리포지터리 주소]

  • 앞으로 진행하게 될 SBB 프로그램은 모두 깃허브에서 관리할 예정이며, 아래는 해당 리포지터리 주소입니다.

https://github.com/psm817/sbb_2024_05

 

GitHub - psm817/sbb_2024_05

Contribute to psm817/sbb_2024_05 development by creating an account on GitHub.

github.com

 

 

반응형