전체 스택 Reddit 클론 - Spring Boot, React, Electron 앱 - 1부

전체 스택 Reddit 클론 - Spring Boot, React, Electron 앱 - 1부



소개



이 블로그 게시물 시리즈에서는 Spring Boot, React 및 Electron을 사용하여 Reddit 클론을 빌드할 것입니다. Spring Data JPA, Spring Security with JWT, Redis for Caching이 있는 데이터베이스용 PostgreSQL과 같은 다양한 Spring 기술을 사용할 것입니다. 프런트엔드 부분은 Typescript와 함께 React, 상태 관리를 위한 Redux 및 Material-UI를 사용합니다.

중요한 링크


  • 백엔드 소스: https://github.com/MaxiCB/vox-nobis/tree/master/backend
  • 프런트엔드 소스: https://github.com/MaxiCB/vox-nobis/tree/master/client
  • 트렐로 보드: https://trello.com/b/Aw4GcVFv
  • 실시간 URL: 진행 중

  • 1부: 백엔드 프로젝트 초기화 👩‍💻



    이 애플리케이션의 백엔드 구축을 시작하겠습니다. 가장 먼저 할 일은 Spring Initializer Website을 사용하여 프로젝트를 초기화하는 것입니다.

  • 다음과 같이 프로젝트를 구성합니다.
  • 프로젝트: 메이븐 프로젝트
  • 언어: 자바
  • 스프링 부트: 2.3.2
  • 프로젝트 메타데이터:
  • 그룹: com.your-name-here
  • 아티팩트: 백엔드
  • 포장: JAR
  • 자바: 11
  • 종속성:
  • 롬복
  • 스프링 웹
  • 스프링 보안
  • 스프링 데이터 JPA
  • Java 메일 발신자
  • 타임리프
  • PostgreSQL 드라이버
  • Spring Data Redis(액세스+드라이버)

  • 프로젝트 생성을 클릭하고 프로젝트를 다운로드한 다음 안전한 곳에 콘텐츠를 추출합니다.


  • 선호하는 IDE에서 프로젝트를 열고 프로젝트 구조가 아래와 유사한지 확인합니다.




  • 파트 2: 추가 종속성 📚



    이제 프로젝트 이니셜라이저에서 사용할 수 없었던 몇 가지 추가 종속성을 추가해야 합니다.

  • pom.xml 파일을 열고 향후 테스트를 위해 JWT 인증, TimeAgo, Validator 및 JavaFaker에 대한 다음 종속성을 추가합니다.

    <!-- JavaFaker related dependencies-->
    <dependency>
        <groupId>com.github.javafaker</groupId>
        <artifactId>javafaker</artifactId>
        <version>0.12</version>
    </dependency>
    <!-- JWT related dependencies-->
    <dependency>
        <groupId>io.jsonwebtoken</groupId>
        <artifactId>jjwt-api</artifactId>
        <version>0.11.2</version>
    </dependency>
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
    </dependency>
    <dependency>
        <groupId>io.jsonwebtoken</groupId>
        <artifactId>jjwt-impl</artifactId>
        <scope>runtime</scope>
        <version>0.11.2</version>
    </dependency>
    <dependency>
        <groupId>io.jsonwebtoken</groupId>
        <artifactId>jjwt-jackson</artifactId>
        <scope>runtime</scope>
        <version>0.11.2</version>
    </dependency>
    <!-- TimeAgo related dependencies-->
    <dependency>
        <groupId>com.github.marlonlom</groupId>
        <artifactId>timeago</artifactId>
        <version>4.0.1</version>
    </dependency>
    <dependency>
        <groupId>org.jetbrains.kotlin</groupId>
        <artifactId>kotlin-stdlib-jdk8</artifactId>
        <version>${kotlin.version}</version>
    </dependency>
    <dependency>
        <groupId>org.jetbrains.kotlin</groupId>
        <artifactId>kotlin-test</artifactId>
        <version>${kotlin.version}</version>
        <scope>test</scope>
    </dependency>
    


  • 3부: 데이터베이스, 최대 절전 모드 및 Java 메일 구성 ⚙



    이제 PostgreSQL, Hibernate JPA, Java Mail 및 Redis를 구성해야 합니다.
  • PostgreSQL과 Redis가 이미 설치 및 설정되어 있다고 가정합니다.
  • PostgreSQL Installation
  • Redis Installation
  • 계정 확인 및 알림 이메일을 보내려면 Mailtrap에서 계정을 만들어야 합니다. 이것이 필요한 이유는 MailTrap을 통해 가짜 SMTP 서버에 액세스하기 위해서입니다. 로그인하고 데모 받은 편지함에서 톱니바퀴 아이콘을 선택하여 연결 세부 정보에 액세스할 수 있습니다.

  • src/main/resources/application.properties 파일을 열고 다음을 추가합니다.

    # Database Properties
    spring.datasource.driver-class-name=org.postgresql.Driver
    spring.datasource.url=jdbc:postgresql://localhost:5432/postgres
    spring.datasource.username=<your-db-username>
    spring.datasource.password=<your-db-password>
    spring.datasource.initialization-mode=always
    spring.jpa.hibernate.ddl-auto=create-drop
    spring.jpa.show-sql=true
    spring.jpa.generate-ddl=true
    # Redis Properties
    spring.cache.type=redis
    spring.redis.host=localhost
    spring.redis.port=6379
    # Mail Properties
    spring.mail.host=smtp.mailtrap.io
    spring.mail.port=25
    spring.mail.username=<your-smtp-username>
    spring.mail.password=<your-smtp-password>
    spring.mail.protocol=smtp
    


  • 결론 🔍



  • 모든 것이 올바르게 구성되었는지 확인하기 위해 애플리케이션을 실행하고 콘솔에 오류가 없는지 확인할 수 있습니다. 콘솔 하단을 향해 아래와 유사한 출력이 표시되어야 합니다.


  • 이 기사에서는 Spring Boot 백엔드의 초기화에 대해 다루었습니다.
  • 사용자 인증을 위한 JWT, TimeAgo 및 JavaFaker 종속성을 추가하여 날짜를 상대 시간 전 언어로 표시하고 향후 테스트를 위해 가짜 데이터를 생성했습니다.
  • 백엔드가 데이터베이스, redis 및 메일 트랩에 연결하는 데 필요한 모든 구성을 추가했습니다.

  • 다음 📺



    백엔드 내에 필요한 모든 도메인 엔터티 및 리포지토리 생성.

    좋은 웹페이지 즐겨찾기