Java/Spring13 [Spring] 이메일 인증번호를 통한 회원가입 이메일 인증을 통해 구현하는 프로젝트를 만들다가 이 부분에 막혀서 몇일을 고민을 하고 고생을 했다. 우선 링크를 통한 회원가입, 인증번호를 통한 회원가입 2가지의 방법이 있는데 이번에는 인증번호를 통한 회원가입을 진행하겠다. 1. Spring 라이브러리 다운받기 implementation 'org.springframework.boot:spring-boot-starter-mail' 라이브러리를 추가해주자 !! Spring에서 메일 서버를 사용하기 위해서는 서버와 연결을 해야한다. Spring 자체적으로 메일을 주고받는것이 아닌 stmp 메일 서버를 사용해서 메일을 보내는 만큼 spring 안에 어떤 메일 서버와 연결하는지 관련 정보들을 넣어줘야 한다. 가장 많이 사용하는 법 2가지는 네이버, 구글 Gmai.. 2023. 1. 11. @Async 어노테이션 @Async 어노테이션 비동기처리 @Async 어노테이션을 빈Bean에 넣으면 별도의 쓰레드에서 실행. 호출자는 호출된 메소드가 완료될 때 까지 기다릴 필요가 없다. @Async 의 두가지 제약사항 public 메소드에만 적용해야한다 셀프 호출self invocation – 같은 클래스안에서 async 메소드를 호출 – 은 작동하지않음 메소드가 public이어야 프록시가 될수 있기 때문이고 셀프호출은 프록시를 우회하고 해당 메소드를 직접 호출하기때문에 작동하지않는 것 리턴타입이 없는 메소드 Methods with void Return Type @Async public void asyncMethodWithVoidReturnType() { System.out.println("Execute method asy.. 2023. 1. 9. JPA study 2주차 영속성 컨텍스트 entity manger는 db연결이 필요한 시점까지 커넥션을 얻지 않는다 트랜잭션을 시작할때 커넥션을 획득 여기서 말하는 커넥션이란 ? 그리고 그 커넥션들이 있는 커넥션풀이란 ? 웹 컨테이너(WAS)가 실행되면서 DB와 미리 connection(연결)을 해놓은 객체들을 pool에 저장해두었다가 클라이언트 요청이 오면 connection을 빌려주고, 처리가 끝나면 다시 connection을 반납받아 pool에 저장하는 방식을 말합니다. 트랜잭션을 커밋하는 순간 영속성 컨텍스트에 새로 저장된 엔티티를 데이터베이스에 반영 - flush 트랜잭션을 지원하는 쓰기 지연 - 커밋하기 직전까지 데이터베이스에 엔티티를 저장하지 않고 내부 쿼리 저장소에 SQL을 모아둠 그리고 커밋할때 모아둔 쿼리를 데이터베이스에 보낸.. 2022. 12. 17. [Spring]@Validation @valid 어노테이션 @Validation 어노테이션 Bean Validation이라는 데이터 유효성 검사 프레임워크를 제공 @Valid를 이용하면, service 단이 아닌 객체 안에서, 들어오는 값에 대해 검증을 할 수 있다. springboot가 버전업을 하면서 web 의존성안에 있던 constraints packeage가 아예 모듈로 빠졌다. implementation 'org.springframework.boot:spring-boot-starter-validation' 유효성 검사에 사용할 수 있는 어노테이션 @AssertFalse -> 주석이 달린 요소는 거짓이어야한다. @AssertTrue -> 주석이 달린 요소는 참이어야한다. @Email -> 주석이 달린 문자열은 이메일 형식이어야한다. @Future -> 주.. 2022. 12. 8. [Java/Spring] 스프링 컨테이너 스프링 컨테이너 스프링 컨테이너는 스프링에서 자바 객체들을 관리하는 공간 자바 객체를 스프링에선 빈(Bean), 스프링 컨테이너에서는 이 빈의 생성부터 소멸까지를 개발자 대신 관리해주는 곳 ResourcePatternResolver : 리소스를 읽어오기 위한 인터페이스 EnvironmentCapable : 개발, 운영 등 환경을 분리해서 처리하고, 애플리케이션 구동 시 필요한 정보들을 관리하기 위한 인터페이스 MessageSource : 메시지 다국화를 위한 인터페이스 ApplicationEventPublisher : 이벤트 관련 기능들을 제공하는 인터페이스 스프링 컨테이너는 BeanFactory와 ApplicationContext로 나뉘어진다. 스프링 컨테이너의 최상위 인터페이스이다. 스프링 빈을 관리.. 2022. 12. 8. [Spring] 스프링 프레임워크(Spring Framework) 스프링 프레임 워크를 말하기 앞서 프레임 워크(Framework) 프레임워크는 프로그램의 기초를 구축할 수 있는 코드의 집합 개발자라는 직업은 각 개발자의 능력에 따라 결과물의 완성도가 천차만별이기 때문에, 이를 극복하고자 하여 나온 결과물이 프레임워크다. 프레임워크를 사용한다면 프로그램의 기본 뼈대와 틀을 정하고, 모든 팀 구성원들이 이 틀과 뼈대에 맞게 살을 붙이기 위해 코드를 작성 스프링 프레임워크(Spring Framework) 하나로 딱 정의하기는 힘들지만 가장 잘 정의된 표현은 자바 엔터프라이즈 개발을 편하게 해주는 오픈 소스 경량급 애플리케이션 프레임워크 라고 생각한다. Java를 기반으로 한 프레임워크. 복잡하지 않고 경량화 된 애플리케이션 프레임워크 한국의 공공기관 웹 서비스 개발 시, .. 2022. 12. 4. [Spring] 제어의 역전 IoC(Inversion of Control)와 bean 제어의 역전 IoC(Inversion of Control) 구현 객체가 프로그램의 제어 흐름을 스스로 컨트롤하는 것은 개발자 입장에서는 당연한 자연스러운 흐름이지만 외부에서 관리하는 것을 제어의 역전이라한다. 프레임워크가 내가 작성한 코드를 제어하고, 대신 실행하면 그것은 프레임워크가 맞지만 내가 작성한 코드가 직접 제어의 흐름을 담당하면 그것은 라이브러리 한마디로, 스프링 프레임워크가 프로그램을 제어하는 것을 제어의 역전이라 한다. 프로그램의 진행 흐름과 구체적인 구현을 분리시킬 수 있다. 개발자는 비즈니스 로직에 집중할 수 있다. 구현체 사이의 변경이 용이하다. 객체 간 의존성이 낮아진다. 의존성은 쉽게 말해 어떤 객체가 사용해야 할 객체라고 할 수 있고, 이것을 직접 new 등을 써서 만들어 쓰면 .. 2022. 12. 4. [Spring] 의존관계 주입(Dependency Injection), 의존성 주입, DI DI를 알기 전 의존관계에 부터 말하자면 의존관계 의존 대상 B가 변하면, 그것이 A에 영향을 미칠 때 A는 B와 의존관계라 한다. 쉽게 말해 B가 변경되었을 때 그 영향이 A에 미치는 관계 피자 가게의 요리사는 피자 레시피에 의존한다. 만약 피자 레시피가 변경된다면, 요리사는 피자를 새로운 방법으로 만들게 된다. 레시피의 변화가 요리사에 미쳤기 때문에 요리사는 레시피에 의존한다라고 할 수 있다. public class PizzaChef{ private PizzaRecipe pizzaRecipe; public PizzaChef() { this.pizzaRecipe = new PizzaRecipe(); } } PizzaChef 객체는 PizzaRecipe 객체에 의존 관계 이러한 구조는 문제점들이 있다. .. 2022. 12. 4. [Backend] API 패턴 - 레이어드 아키텍처 패턴 아키텍처 시스템 목적을 달성하기위해 시스템의 상호작용등의 시스템디자인에 대한 제약 및 설계 최적화를 목표로 두고 시스템 구성과 동작원리 그리고 시스템의 구성환경등을 설명 및 설계하는 청사진 또는 설계도 레이어드 아키텍처 Multi-tier 아키텍처 패턴이라고도 하는 레이어드 아키텍처는 코드를 논리적인 부분 혹은 역할에 따라 독립된 모듈로 나누어서 구성하는 패턴 백엔드 API 코드에 가장 널리 적용되는 패턴 중 하나 Spring, SpringBoot 프로젝트 진행 시, 코드 분리/관리에 대한 방법론 애플리케이션 구성 요소들을 수평으로 나눠서 관리함 프레젠테이션, 비즈니스, 퍼시스턴스, 데이터베이스로 나눠짐 수평적으로 나누었다는 것은 무엇일까 ? 아래의 그림처럼 레이어로 나눠 놓은 것들을 하나의 클래스, 하.. 2022. 12. 1. 이전 1 2 다음