개인 프로젝트/블로그 만들기

나의 블로그 만들기 프로젝트 (1일차) - yml, gradle 설정

coon94 2023. 3. 28. 09:56

 

https://youtube.com/playlist?list=PL93mKxaRDidECgjOBjPgI3Dyo8ka6Ilqm

 

Springboot - 나만의 블로그 만들기

[스프링부트로 인스타그램 클론코딩] https://www.easyupclass.com/course/218/about

www.youtube.com

 

이번 프로젝트는 유튜브채널 '메타코딩' 님의 나만의 블로그 만들기 강의를 듣고

 

클론 코딩한 것을 토대로 복습한 후, 차후 커스텀 및 다른 기술 스택을 경험해보고자 한다.

 

이미 만든 코드는 Github-link 이 쪽에서 확인 가능하다.

 


공부할 주제:

Java란?

Spring Framework란? 

YAML이란?

 

Github 코드 보기


1. 프로젝트 생성

 

프로젝트 이름은 Myblog

자바 11, JDK 11 버전을 사용하였으며, 디펜던시는 차후에 더 추가한다.

 


2. build.gradle 설정

plugins {
    id 'java'
    id 'org.springframework.boot' version '2.7.0'
    id 'io.spring.dependency-management' version '1.0.15.RELEASE'
}

group = 'com.coon'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
    implementation 'org.springframework.boot:spring-boot-starter-security'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    compileOnly 'org.projectlombok:lombok'
    developmentOnly 'org.springframework.boot:spring-boot-devtools'
    runtimeOnly 'org.mariadb.jdbc:mariadb-java-client'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    testImplementation 'org.springframework.security:spring-security-test'

    // https://mvnrepository.com/artifact/org.apache.tomcat.embed/tomcat-embed-jasper
    implementation group: 'org.apache.tomcat.embed', name: 'tomcat-embed-jasper', version: '9.0.69'
    // https://mvnrepository.com/artifact/org.springframework.security/spring-security-taglibs
    implementation group: 'org.springframework.security', name: 'spring-security-taglibs', version: '5.7.5'
    // https://mvnrepository.com/artifact/javax.servlet/jstl
    implementation group: 'javax.servlet', name: 'jstl', version: '1.2'
}

tasks.named('test') {
    useJUnitPlatform()
}

build.gradle

 

spring-data-jpa(ORM), oauth2-client(OAuth), security(Session),

 

web(브라우저), lombok(VO), devtools(앱실행), mariadb-java-client(DB서버)을 추가하였고,

 

추가적인 tomcat-embed-jasper(톰캣 외부실행), spring-security-tablibs(권한), jstl(jsp에서 로직내장) 은

 

maven repository를 통해 추가하였다.

 


3. DB 생성

나는 AWS RDS에 mariadb를 설치하여 dbeaver를 통해 사용하는데 이것과 관련된 자세한 과정은 차후에 기록하겠다.

 

DB서버는 어떤것을 사용해도 상관없으나 각각의 Query문법을 잘 숙지해야 한다.

 

 

1. CLI나 GUI를 통해 database를 생성한다.

 

2. user를 생성한 다음 user에게 권한을 부여한다.


4. application.yml 설정

server:
  port: 포트번호
  servlet:
    context-path: /
    encoding:
      charset: UTF-8
      enabled: true
      force: true

spring:
  datasource:
    driver-class-name: org.mariadb.jdbc.Driver
    url: jdbc:mariadb://<본인DB주소(로컬은 localhost)>/<database이름>?serverTimezone=Asia/Seoul
    username: DB아이디
    password: DB비밀번호
  devtools:
    remote:
      restart:
        enabled: true
  mvc:
    view:
      prefix: /WEB-INF/views/
      suffix: .jsp
  jpa:
    open-in-view: true
    hibernate:
      ddl-auto: update
      naming:
        # Entity와 테이블의 컬럼명 컨밴션 설정
        physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
      use-new-id-generator-mappings: false # jpa의 기본적인 numbering 전략 on/off
    show-sql: false # 콘솔에 쿼리 표시
    properties:
      hibernate.format_sql: true
  jackson:
    serialization:
      fail-on-empty-beans: false

application.yml

 기본적으로 application.properties 파일명으로 resources 폴더 안에 생성된다. 

 

properties문법으로 쓰면 아래와 같이 코드가 지저분해지기 때문에 나는 application.yml로 Refactoring하여 사용하겠다.

spring.datasource.hikari.jdbc-url=jdbc:oracle:thin:@IP:Port/orcl
spring.datasource.hikari.username=아이디
spring.datasource.hikari.password=비밀번호

application.properties

 


5. 프로젝트 실행

설정이 마무리 되었으면 프로젝트를 실행해준다.

 

이 때 DB관련 에러가 없다면 성공이 잘될 것이다. 

 

만약 에러가 난다면 DB연결과 관련해서 코드를 잘 살펴보자.

 

이제 주소창에 localhost:포트번호/ 적고 이동하면 자동으로 로그인페이지로 갈 것이다.

 

이 것은 Spring Security가 dependency에 추가되어있기 때문에 security가 우리의 주소를 가로챈 것이다.

 

security적용전이니 이것이 불편하다면 security dependency를 주석처리해 놓는다.

 

가려던 주소로 이동하려면 아이디는 user, 비밀번호는 콘솔창에 뜬 코드를 입력하면 된다.

 

이러한 화면이 뜬다면 정상적으로 해당 주소로 이동된 것이다. 

 

 

자 이제 차근차근 프로젝트를 구축해보자!!