본문 바로가기

Java95

[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.
[Java] 스레드(thread) 프로세스(process) 프로세스(process)란 단순히 실행 중인 프로그램(program) 사용자가 작성한 프로그램이 운영체제에 의해 메모리 공간을 할당받아 실행 중인 것 프로세스는 프로그램에 사용되는 데이터와 메모리 등의 자원 그리고 스레드로 구성 스레드(thread) 스레드(thread)란 프로세스(process) 내에서 실제로 작업을 수행하는 주체 모든 프로세스에는 한 개 이상의 스레드가 존재하여 작업을 수행 두 개 이상의 스레드를 가지는 프로세스를 멀티스레드 프로세스(multi-threaded process)라고 한다 멀티스레드 멀티스레드 =multi thread =다중스레드 멀티스레드는 여러개의 스레드를 이용하는 프로그램이다 다중 스레드에서 각각의 스레드는 하나의 독립적인 프로세스처럼 작업 .. 2022. 12. 8.
[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.
[Java/Spring] 객체지향 프로그래밍 5원칙 프로그래밍 다섯가지 개발 원칙은 소프트웨어 개발과 유지보수를 쉽게 할수 있도록 하는 가이드라인이라고 볼 수 있다. 이러한 원칙은 Robert C. Martin이라고 하는 소프트웨어 엔지니어에 의해 유명해졌다. 글에는 이해하기 쉽도록 클래스라는 단어를 사용하지만, 이는 함수, 메서드, 모듈에도 적용이 가능합니다. 이제 시작해봅시다! SRP: 단일 책임 원칙 (Single Responsibility Principle) 클래스는, 오직 하나의 대해서만 책임져야 한다. 만약 클래스가 여러가지 작업을 책임져야 한다면, 이는 버그 발생 가능성을 높입니다. 당신이 많은 기능중 한가지를 변경할때, 당신이 모르는 사이에 다른 기능에 영향을 줄 수 있기 때문입니다. SRP의 목적은 행동들을 분리하는 것이고, 이로 인해 당.. 2022. 12. 8.
[Java/Spring] 어노테이션 어노테이션(@, annotation) 사전적 의미로는 '주석' , Java 코드에 @를 이용해 주석처럼 달아 특수한 의미를 부여 프로그램 코드의 일부가 아닌 프로그램에 관한 데이터를 제공, 코드에 정보를 추가하는 정형화된 방법 즉, 프로그램에게 추가적인 정보를 제공해주는 메타데이터라고 볼 수 있다. * meta data : 데이터를 위한 데이터 2. 종류 1) Spring Annotation @Controller 스프링 MVC의 컨트롤러 객체임을 명시하는 어노테이션 @RequestMapping 특정 URI에 매칭되는 클래스나 메소드임을 명시하는 어노테이션 @RequestParam request의 파라미터를 가져오는 기능을 하며 메소드내에 변수로 활용 @RequestHeader 요청(request)에서 특.. 2022. 12. 8.
[Java] 예외 예외(Exception) 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류 예외가 발생하면 프로그램은 곧바로 종료된다는 점에서 에러와 비슷하지만 예외는 예외 처리(Exception handling)를 통해 프로그램을 종료하지 않고 정상 실행 상태를 유지 예외의 종류에는 일반 예외(Exception)와 실행 예외(Runtime exception)가 있다. 일반 예외는 컴파일러 체크 예외라고도 하는데, 프로그램 실행 시 예외가 발생할 가능성이 높기 때문에 자바 소스를 컴파일하는 과정에서 해당 예외 처리 코드가 있는지 검사(예외 처리 코드가 없다면 컴파일 오류 발생) 실행 예외는 컴파일러 넌 체크 예외라고도 하는데, 실행 시 예측할 수 없이 갑자기 발생하기 때문에 컴파일하는 과정.. 2022. 12. 7.