Tiny Star

🏕️내일배움캠프/📂뉴스 피드 프로젝트(23.06.30)

뉴스 피드 프로젝트 5일차_ERD, API 수정, 코드 리뷰 및 발표 준비

청크 2023. 7. 7. 21:35

스파르타 코딩클럽_ 내일 배움 캠프 Spring 트랙 6기

[프로젝트] 뉴스 피드 만들기

2023.06.30 ~ 2023.07.07

 

<프로젝트 정보>

개발도구 : IntelliJ

프로그래밍 언어 : Java

데이터베이스 : MySQL

프레임워크 : Spring

와이어프레임 : Figma

ERD 설계 : ERD Cloud

 

<프로젝트 내용>

프론트 개발을 하려고 시도했으나..아직 미 완성된 서버 개발도 있고, js를 배운 적이 없는 관계로 프론트와 백 연결이 불가할 것으로 판단됬다.

다음날 있는 발표 준비 등으로 시간도 부족했기 때문에 지금 배우고 있고 우리의 주특기를 더 완벽하게 만들어보자는 의견으로 모아져

프론트엔드 부분은 빠르게 놔버리고 코드 리뷰와 함께 점검도 하고 발표를 위한 준비를 했다.

 

전날 시작한추가기능 구현도 목표에 맞게 전부 구현에 성공했다.

로그아웃, 게시글 내 댓글기능, 게시글과 댓글의 공감기능 그리고 가장 오래 걸린 이메일 회원가입까지!

물론 전부 참여 할 수는 없었지만 다같이 코드리뷰하면서 이해하는 시간이 있어서 다행이었다.

 

[EmailConfig]

package com.sparta.newspeed.config;

import java.util.Properties;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.JavaMailSenderImpl;



@Configuration
@PropertySource("classpath:email.properties") //설정 파일을 읽어 속성을 주입
public class EmailConfig { //이메일 설정 관련 class

    @Value("${mail.smtp.port}")
    private int port;
    @Value("${mail.smtp.socketFactory.port}")
    private int socketPort;
    @Value("${mail.smtp.auth}")
    private boolean auth;
    @Value("${mail.smtp.starttls.enable}")
    private boolean starttls;
    @Value("${mail.smtp.starttls.required}")
    private boolean startlls_required;
    @Value("${mail.smtp.socketFactory.fallback}")
    private boolean fallback;
    @Value("${AdminMail.id}")
    private String id;
    @Value("${AdminMail.password}")
    private String password;

    @Bean
    public JavaMailSender javaMailService() {
        JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
        // Gmail SMTP 서버 호스트를 설정
        javaMailSender.setHost("smtp.gmail.com");
        // Gmail 계정의 아이디를 설정 : id 변수는 사용자의 Gmail 계정아이디로 대체
        javaMailSender.setUsername(id);
        javaMailSender.setPassword(password);
        // Gmail SMTP 서버 포트 번호를 설정
        javaMailSender.setPort(port);
        // 메일 전송에 대한 구체적인 속성들을 설정
        javaMailSender.setJavaMailProperties(getMailProperties());
        // 기본 인코딩을 UTF-8로 설정
        javaMailSender.setDefaultEncoding("UTF-8");
        return javaMailSender;
    }
    private Properties getMailProperties()
    {
        Properties pt = new Properties();
        // SMTP 서버의 소켓 포트 번호를 설정
        pt.put("mail.smtp.socketFactory.port", socketPort);
        // SMTP 서버에서 사용자 인증을 요구하는지 여부를 설정
        pt.put("mail.smtp.auth", auth);
        // STARTTLS 암호화를 사용하여 연결을 암호화하는지 여부를 설정
        pt.put("mail.smtp.starttls.enable", starttls);
        // STARTTLS 암호화를 필수로 요구하는지 여부를 설정
        pt.put("mail.smtp.starttls.required", startlls_required);
        // 소켓 팩토리의 대체 메커니즘을 설정
        pt.put("mail.smtp.socketFactory.fallback",fallback);
        // 소켓 팩토리 클래스를 설정 :  SSL 소켓 팩토리 클래스를 사용하도록 "javax.net.ssl.SSLSocketFactory"로 설정
        pt.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
        return pt;
    }
}

포기한 프론트..

프론트 대신... Postman..!

 

기능을 구현하다보니 욕심이 나는 부분이 생겨서 처음 작성한 ERD, API 보다 더 많은 기능을 구현했기때문에ERD와 API 수정도 함께 진행했다.

 

수정된 ERD

API 명세 : https://documenter.getpostman.com/view/27971774/2s93zFXytK

 

발표까지 잘 마무리 할 수 있으면 좋겠다.