목록스프링 (17)
최코딩의 개발노트
저번 시간에는 스프링 메일 라이브러리를 활용해서 네이버 및 구글 메일 인증 절차를 확인했다. 이번에는 회원가입에서 어떻게 메일을 실시간으로 인증할 것인지 알아보겠다. 예시자 다음과 같이 회원 가입 폼이 있다. 위에서 본인 네이버 이메일을 입력하고 인정번호 버튼을 누르면 ex) chltmdgh517 @naver.com위와 같이 해당 메일에 인증 코드가 날라온다. 그럼 위 두 사진을 비교하듯이 인증 코드가 일치하면 오른쪽! 일치하지 않으면 왼쪽 화면이 뜬다!! 이제 코드로 가보자 코드필자는 고민을 했다... 전통적인 폼 제출해서 넘기는 방식으로는 회원가입 실시간 이메일 인증을 구현 못할1거라고... 구글링 해본결과 AJAX를 활용해서 실시간으로 인증할 수 있다고 한다!! 한번 그 코드를 직접 알려주겠..
이번시간에는 필자가 개발을 하면서 스프링을 통해 네이버와 구글로 메일로 보내는 법을 소개 할 것입니다~ 네이버네이버는 앞서 2단계 보안이 해지된채로 설정을 해줘야됩니다. 만약 이과정이 번거로우시면 새계정을 파시는것을 추천드립니다. 네이버 환경설정 - POP3/IMAP 설정에 들어와서 다음과 같이 해줍니다. 그 후 바로 아래에 아이디, 비밀번호, SMTP 서버명, SMTP 포트 번호를 기억해둡시다. 이렇게 하면 세팅이 다 됐습니다! 이제 인텔리제이로 들어가서 작업을 해줘야 됩니다. 1. Gradle 작업implementation 'org.springframework.boot:spring-boot-starter-mail:3.2.5' 메일 의존관계를 위해 Gradle에 다음과 같이 추가를 해줍니다. 현재..
상속관계 매핑 조인 전략(JOINED) - 조인 전략은 위와 같이 객체랑 관계형DB랑 구조가 비슷할 때 사용하는 것이다. @Entity // 중복되는 속성들을 다 하위로 보냄 즉 item 테이블 d없음 근데 쿼리 em.find 할때 union해서 다 뒤짐 //@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) // 이거 안쓰면 상속받은 애들 다 한테이블로 추가됨 즉 상속으로 나뉘게 해주는거 innerjoin @Inheritance(strategy = InheritanceType.JOINED) // 다 통일한 단일 테이블 추가로 discrim 없어도 dtype 생김 //@Inheritance(strategy = InheritanceType.SINGLE_TA..
JdbcTemplate 적용 - 기본 private final JdbcTemplate jdbcTemplate; public JdbcTemplateItemRepositoryV1(DataSource dataSource) { this.jdbcTemplate = new JdbcTemplate(dataSource); } JdbcTemplate 설정은 다음과 같이 해준다. public Item save(Item item) { String sql = "insert into item (item_name, price, quantity) values (?, ?, ?)"; KeyHolder keyHolder = new GeneratedKeyHolder(); // 키값 가져옴 jdbcTemplate.update(con -> ..
네트워크 기초 용어 네트워크 - 하드웨어적인 전송 매체를 매개로 서로 연결되어 데이터를 교환하는 시스템의 모임 - 통신용 전송 매체로 연결된 여러 시스템이 프로토콜을 사용해 데이터를 주고받을 때, 이들을 하나의 단위로 통칭한 것 인터페이스 - 시스템과 전송 매체의 연결 지점에 대한 규칙 - 시스템과 시스템을 연결하기 위한 표준화된 접촉 지점을 의미 프로토콜 - 컴퓨터 내부에서, 또는 컴퓨터 사이에서 데이터의 교환 방식을 정의하는 규칙 체계 - 논리적으로 상호 연동되는 시스템이 전송 매체를 통해 데이터를 교환할 때 따르는 표준화된 대화 규칙 표준화 - 인터페이스와 프로토콜은 연동 형식의 통일이 필요 - 서로 다른 시스템이 상호 연동해 동작하기 위한 통일된 연동 형식 시스템 - 내부 규칙에 따라 자율적으로 ..
시작 @Slf4j @RestController public class ApiExceptionController { @GetMapping("/api/members/{id}") public MemberDto getMember(@PathVariable("id") String id){ if(id.equals("ex")){ throw new RuntimeException("잘못된 사용자"); } return new MemberDto(id,"hello"+id); } @Data @AllArgsConstructor static class MemberDto{ private String memberId; private String name; } } - 객체를 반환해주는 컨트롤러를 다음과 같이 만들어주자 - 이때 ex가 나..