스프링부트 환경설정

주현·2023년 11월 4일
0

springboot

목록 보기
1/8

스프링부트 프레임워크로 프로젝트를 진행하기 위한 환경을 설정하려고 한다.

https://start.spring.io 에서 스프링부트를 위한 라이브러리와 버전을 선택합니다.

하고 파일을 다운 받고나서 인텔리제이에서 해당 파일의 build.gradle을 열어서 시작을 한다.

여기서 Dependcies에 많은 모듈이 있는데 그것에 대해서 짧게 설명하려고 합니다.


Dependcies

1. DEVELOPER TOOLS

스프링 개발에 보조적으로 도움이 될만한 모듈들이 포함되어 있습니다.
실제 서비스 기능에는 영향을 미치지는 않습니다.

- Spring Boot DevTools(취향에 따라 사용)

Devtools는 보통 스프링 어플리케이션을 띄웠을 때, 재시작하지 않고 코드의 변화를 반영시킬 때 사용합니다.
HTML 파일의 경우 LiveReload 기능을 제공해, 저장하면 그 변화가 페이지에 바로 나타나게 할 수도 있습니다.

- Lombok(추천, 거의 필수)

저는 Lombok은 거의 필수적으로 넣고 들어갑니다. class에 getter, setter, toString, equals, hashcode, constructor, builder 패턴 메소드까지 어노테이션으로 간단하게 지정해줄 수 있어, 자바 특유의 장황한 클래스를 줄여주는 좋은 툴입니다.

- Spring Configuration Processor(도입할만 함)

스프링 개발을 하면서 application.yaml 또는 application.properties를 작성할 때 추천을 받고 싶다면 이 기능을 쓰면 됩니다.
다만 intelliJ의 경우 Annotation Processor를 켜고 Spring assistant를 켜야 정상적으로 이용할 수 있습니다.
이외에도 내 클래스에 application 파일에 있는 설정값을 주입하고 싶다면 @ConfigurationProperties 를 사용해주면 됩니다.

2. WEB

웹서비스를 만들 때 필수/도움이 되는 모듈들이 모여 있습니다.

- Spring Web(중요)

말해 뭐하나 싶을 정도로 웹 서비스를 만드는 데에 가장 중요한 모듈입니다.
내장 톰캣뿐 아니라, Spring MVC 패턴을 구현하는 데에 필요한 대부분의 기능들이 여기에 들어 있습니다.
REST API 서버를 만든다면 필수적인 모듈입니다.

- Spring Reactive Web(추천! 물론 학습 후)

최근 웹 개발의 가장 큰 트렌드는 Reactive한 서비스입니다.
Reactive Web에는 Reactive Stream의 구현체인 Reactor가 기반인 Webflux가 포함되어 있으며,
Servlet Container도 Netty로 바뀌며 전체적인 구성 자체가 많이 달라 졌습니다.
기존과 굉장히 다른 개발 방식을 따르기 때문에 기술을 제대로 이해하는 것도 중요합니다.

이건 Spring Data Repository들을 Rest API를 통해 접근할 수 있게 해주는 모듈입니다.
기존에 하나하나 컨트롤러를 통해서 만들어주던 것을 이 의존성을 추가하면 어느정도 자동화할 수 있습니다.
일정한 규칙에 맞게URL을 작성하여 요청을 보내면 CRUD를 모두 처리할 수 있습니다.
특별히 가공된 데이터를 다룰 일이 없다면 이 모듈을 추가하는 것도 고려해볼만 한 것 같습니다.
추가로 HAL Explorer는 browser를 통해서 GUI로 Rest Repositories를 관리/테스트 할 수 있습니다.

- Spring Session(필요시 사용)

유저 세션을 다루는 API와 메서드들을 모아놓은 모듈입니다.
Redis와 같은 DB와 함께 관리합니다.

  • Spring HATEOS(필요시 사용)

우리가 사용하고 있는 Rest API는 사실 대부분 Rest API의 요건을 충족시키지 않고 있습니다.
진정한 Rest API는 HATEOAS(Hypermedia As The Engine Of Application State) 방식을 따르고 있습니다.
그래서 그런 API의 작성을 도와주는 모듈입니다.
HATEOS 관련 유명한 발표자료가 있어 링크로 남깁니다.

- Spring Web Services(사용 빈도 낮음)

이름은 누가봐도 가장 중요해보이지만 요새 잘 사용하지 않는 SOAP API 구현을 위한 모듈입니다.

- Jersey(쓰던 사람만, 중요도 낮음)

Jersey는 자바 진영에서 공식으로 제공하는 Rest API 서비스 프레임워크입니다.
즉 스프링 Controller를 대신하는 다른 개발 방식과 관련된 모듈입니다.
이미 스프링을 쓰는 사람은 굳이 사용할 필요는 없어 보입니다.

3. TEMPLATE ENGINES

Thymeleaf / Apache Freemarker / Mustache / Groovy Templates

Spring은 자체적으로 HTML 뷰를 내장하고 있고 거기에 적용할 수 있는 템플릿 엔진이 위처럼 네 가지가 있습니다.
서버 개발 말고 실제로 페이지를 만들어야 한다면, 본인의 취향에 맞는 문법을 가진 템플릿을 사용하면 됩니다.
요새는 프런트엔드가 따로 나뉘어져 있어서 테스트용이 아니라면 굳이 사용할 빈도가 크지는 않을 것 같습니다.

4. SECURITY

보안과 관련된 모듈들이 모여 있습니다.

- Spring Security(중요)

회원관리에 필요한 것들이 대부분 들어가 있는 중요한 모듈입니다.
굉장히 다양한 방식으로 커스터마이징을 할 수 있습니다.
내용이 많아 하나의 프레임워크 수준입니다. 너무 유명해 이 정도만 하고 넘어 가겠습니다.

- OAuth2 Client / OAuth2 Resource Server(중요)

OAuth2는 요새 Security 관련해서는 거의 필수적인 기능으로 꼽히고 있습니다.
그런 서비스를 더욱 편리하게 해주는 모듈입니다.

- Spring LDAP(필요시 사용, 중요도 낮음)

LDAP 보안 방식을 쉽게 이용할 수 있도록 해주는 모듈입니다.

5. SQL

Database, RDBMS와 관련된 모듈들이 모여있습니다.

- JDBC API(필요시 사용)

Java JDBC를 스프링 환경에서 사용할 수 있게 해주는 기본 모듈입니다.
데이터베이스를 이용할 수 있는 가장 기초적인 방법을 제공합니다.

- Spring Data JPA(필수)

JPA는 Java Persistence API라고 하여 자바 ORM 기술의 토대를 이루는 기술 명세입니다.
Spring JPA는 Hibernate를 사용하고 있으며, Spring에서는 DB를 다루는 거의 표준 기술인 상황입니다.
Class Entity를 마치 DB처럼 사용할 수 있는 매우 유용한 도구이지만, 학습량이 만만한 도구는 아닙니다.

- Spring Data JDBC(추천)

이름만 봐서는 옛날 기술인줄 알았는데, 의외로 얼마 안 된 기술입니다.
JPA의 복잡함에 대응하여 간단하고 빠른 것을 특징으로 합니다.
아직 기술의 동향을 지켜본 다음 사용할 만 할 것 같습니다.

- Spring Data R2DBC(추천)

Reactive한 웹 서비스에 걸맞는 기능을 제공하는 모듈입니다.
Spring Reactive Web에서 RDBMS를 사용하기 위해서는 거의 필수입니다.
현재 지원하는 DB는 H2, MSSQL, Mysql, MariaDB, Postgres가 있습니다.

- JOOQ Access Layer(쓸만한 도구)

QueryDSL이라고 들어보셨나요. QueryDSL은 sql 쿼리문을 자바 코드로 동적으로 날릴 수 있도록 해주는 라이브러리입니다.
그리고 이 JOOQ도 마찬가지 기능을 제공합니다.
그러나 스프링에서 정식으로 지원은 JOOQ만 하고 있네요.

- H2 Database(추천, 자주 사용)

개발용 서버에서 따로 DB를 붙일 필요가 없다면 이걸 추가해주면 됩니다.
H2는 메모리를 데이베이스로 사용하는 즉각 설치되는 데이터베이스입니다.
의존성에 추가하는 것만으로도 데이터베이스 설정을 전혀 할 필요가 없이 바로 사용할 수 있습니다.

그러나 개발 전용이기 때문에 어플리케이션이 종료될 때 내부 데이터가 모두 사라집니다.

추가로 GUI 콘솔로 진입할 수 있는 url도 자동으로 제공됩니다.

- Apache Derby Database(잘 안 씀)

java로 구현된 가벼운 데이터베이스라고 합니다.
들어보는 것으로 만족하겠습니다.

- HyperSQL Database(잘 안 씀)
H2와 같은 인메모리 DB인데 이것도 요새는 별로 안 쓰는 것 같습니다.

- IBM DB2 / MS SQL Server / MySQL / Oracle /PostgreSQL Driver(중요)

각종 데이터베이스들의 연결 드라이버를 지원합니다.
여기에 필요한 것만 체크만 해주면 DB 연결 준비가 끝납니다.
이후에는 위의 JDBC나 JPA를 함께 추가하여 application.yaml에 세부 설정만 입력해주면 됩니다.


출처 - https://appleg1226.tistory.com/11

profile
Just fucking do it!! 개발자가 꿈인 25살 학부생입니다!!

0개의 댓글