본문 바로가기
Spring, SpringBoot, JPA

SpringBoot Project 게시판 만들기

by 코헤0121 2024. 5. 22.
728x90
반응형

springboot project 게시판 만들기

spring boot 게시판 만들기를 시작하면서, 앞으로의 목차와 프로젝트의 기본 gradle 설정을 이야기 하고자 한다.

참고로 springboot 3.2.5 버전이다!!!

목차

  1. 게시판 만들기 : Board table에 맞춰 작성
    1. CRUD
      1. 게시글의 목록/검색/페이지 처리
      2. 게시물의 등록
      3. 게시물의 조회
      4. 게시물의 수정/삭제
      5. post 후 모달창
    2. Search
    3. reply 개수 넣기
  2. 댓글 달기 : reply
  3. 회원 정보 : member

시작하기

시작하기 앞서 해당 링크에 접속한다 https://start.spring.io/

해당 링크에서 다음과 같이 맞춰준다.

  1. 프로젝트 옵션:
    • Project: Gradle - Groovy 선택됨
    • Language: Java 선택됨
    • Spring Boot 버전: 3.2.5 선택됨
  2. 프로젝트 메타데이터:
    • Group: com.example
    • Artifact: demo
    • Name: demo
    • Description: Demo project for Spring Boot
    • Package name: org.example.demo
    • Packaging: Jar 선택됨
    • Java 버전: 17 선택됨
  3. 종속성(Dependencies):
    • Lombok: Java 애노테이션 라이브러리
    • Spring Boot DevTools: 개발 도구
    • Spring Web: 웹 개발 도구
    • Spring Data JPA: 데이터 퍼시스턴스
    • MySQL Driver: MySQL JDBC 드라이버
    • Thymeleaf: 템플릿 엔진
  4. 생성 버튼:
    • GENERATE 버튼을 클릭하여 설정된 프로젝트를 생성할 수 있습니다.

 

마지막으로 build.gradle에서 앞으로 할(?) 의존성들을 주입한다! (원래라면 하나씩 추가해야 한다..)

 

buildscript {
	ext {
		queryDslVersion = "5.0.0"
	}
}

plugins {
	id 'java'
	id 'org.springframework.boot' version '3.2.5'
	id 'io.spring.dependency-management' version '1.1.4'
	id 'org.jetbrains.kotlin.jvm'
}

group = 'org.zerock'
version = '0.0.1-SNAPSHOT'

java {
}

configurations {
	compileOnly {
		extendsFrom annotationProcessor
	}
}

repositories {
	mavenCentral()
}


dependencies {

	//swagger UI
	implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.5.0'

	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
	implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
	implementation 'org.springframework.boot:spring-boot-starter-web'
	implementation 'org.springframework.boot:spring-boot-starter-validation'
	developmentOnly 'org.springframework.boot:spring-boot-devtools'


	compileOnly 'org.projectlombok:lombok'
	annotationProcessor 'org.projectlombok:lombok'
	// lombok setting - test에서 사용할 수 있게 설정
	testCompileOnly 'org.projectlombok:lombok'
	testAnnotationProcessor 'org.projectlombok:lombok'

	runtimeOnly 'com.mysql:mysql-connector-j'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'

	//Thymeleaf의 레이아웃 기능을 위한 추가 라이브러리
	implementation 'nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect:3.3.0'

	implementation "com.querydsl:querydsl-jpa:${queryDslVersion}:jakarta"

	annotationProcessor(
			"jakarta.persistence:jakarta.persistence-api",
			"jakarta.annotation:jakarta.annotation-api",
			"com.querydsl:querydsl-apt:${queryDslVersion}:jakarta"
	)

	implementation 'org.modelmapper:modelmapper:3.2.0'
	implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"

	implementation 'org.springframework.boot:spring-boot-starter-security'
	
	//ThymeLeaf에서 스프링 시큐리티 사용하기 위한 라이브러리
	// https://mvnrepository.com/artifact/org.thymeleaf.extras/thymeleaf-extras-springsecurity5
	implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity6:3.1.2.RELEASE'

	//OAuth2 인증...
	implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'

}

tasks.named('test') {
	useJUnitPlatform()
}
sourceSets {
	main{
		java{
			srcDirs = ["$projectDir/src/main/java", "$projectDir/build/generated"]
		}
	}
}

compileJava.dependsOn('clean')
728x90
반응형