회원 가입 폼 서브밋 처리

Yuri Lee·2020년 11월 6일
0

AccountController 작성중 발생한 에러

cannot resolve method 'builder'

https://gdpark.tistory.com/177 여기에 나와있는 방법을 사용했으나 다 통하지 않았다. 😥 지금 복습 차원에서 다시 한번 프로젝트를 진행 중인데도 이렇게 많은 에러가 발생하는 것을 보니 잘못 공부했나보다. 천천히 다시 훑어보자!

전에 만들어놓았던 프로젝트와 commit history를 훑어보다가 이건가? 싶어서 Account domain에다가 @Builder @AllArgsConstructor @NoArgsConstructor 어노테이션을 추가해주니 해결되었다.

  • 빌더패턴에 대해 공부하기.
  • password 인코딩 시켜줘야 함.

ConsoleMailSender

이메일, 스프링 이메일 모듈을 추가해놨기 때문에 이메일 관련된 기본 설정도 적용이 되어있다. 주입 받아서 사용할 수는 있지만, 일단 가짜 객체를 만들어서 사용해보도록 하겠다. (구현은 나중에!) 가짜 객체를 만들어 콘솔에다가 출력하는 mail sender을 들자. ConsoleMailSender.java 생성

public class ConsoleMailSender implements JavaMailSender {
    @Override
    public MimeMessage createMimeMessage() {
        return null;
    }
    @Override
    public void send(MimeMessage... mimeMessages) throws MailException {

    }
    ....
}

클래스 ConsoleMailSender가 인터페이스 JavaMailSender를 구현하고 있다는 의미이다. 즉 JavaMailSender의 맴버인 send() 메소드를 클래스 ConsoleMailSender가 반드시 포함하고 있어야 한다는 의미이다. 인터페이스는 하위 클래스에 특정한 메소드가 반드시 존재하도록 강제한다.

local일 때 Bean이 등록되도록!

  • @Component :가짜 개체를 빈으로 등록하여 사용, Component 어노테이션을 이용하면 Bean Configuration 파일에 Bean을 따로 등록하지 않아도 사용할 수 있다.
  • @Profile("local"): profile이 local 일때 사용할 수 있도록 함 .
  • application.properties 에 spring.profiles.active=local 추가

AccountController.java에 JavaMailSender 주입받기

        newAccount.generateEmailCheckToken();
        SimpleMailMessage mailMessage = new SimpleMailMessage();
        mailMessage.setSubject("굿모임, 회원가입 인증");
        mailMessage.setText("/check-email-token?token=" + newAccount.getEmailCheckToken() +
                "&email=" + newAccount.getEmail());
  • setSubject() 메일 제목
  • setText() 메일 본문
  • 완성본은 html로 보냈지만 지금은 간단하게 링크를 사용해서 보내보도록 하자.
  • mailMessage.setText("/check-email-token?");

만들어 보낸 토큰 값, 랜덤한 토큰값을 메일을 보내기 전에 생성해야 한다. 생성한 토큰값을 주고, 그 토큰값에 해당하는 이메일 주소를 보내오도록(=받는 사람) 이메일 역시 그대로 넣어줌. 현재 토큰값은 null, 생성을 아직 하지 않았으므로 😀

Account.java

public void generateEmailCheckToken() {
	this.emailCheckToken = UUID.randomUUID().toString();
}

Account.java에 랜덤한 유효 아이디로 만들어 놓는다. 이 유효 아이디가 실제로 제대로 들어오는지 확인해야 한다.

@Slf4j 어노테이션

Lombok 이 제공하는 @Slf4j 어노테이션을 적용하면 log.debug() 만으로 쉽게 로그를 확인할 수 있다. Spring Boot 에서는 logback 이 기본 로깅 프레임워크로, 의존하고 있는 slf4j api 와 bridge 모듈을 함께 포함하고 있어 로그 처리 관련 모듈을 추가하지 않아도 된다.

회원가입 form에 입력한 값과 함께 token 값이 랜덤 발생하고 있음을 확인할 수 있다.


출처 : 인프런 백기선님의 스프링과 JPA 기반 웹 애플리케이션 개발
https://medium.com/@moztiq/lombok-slf4j-in-spring-boot-5ba85ccd7a25

profile
Step by step goes a long way ✨

0개의 댓글