본문 바로가기

Application18

[Spring] Spring DI 개념과 방법 Spring DI란? 외부에서 두 객체 간의 관계를 결정해주는 것으로 클래스 레벨에서는 의존 관계가 고정되지 않게 하고 런타임 시에 관계를 동적으로 주입하여 유연성을 확보하고 결합도를 낮출 수 있게 해준다. 객체를 직접 생성하는 것이 아니라, 외부(IoC/DI 컨테이너)에서 생성한 후 주입시켜주는 방식이다. 애플리케이션 실행 시점에 필요한 객체(빈)을 생성해야 하며, 의존성이 있는 두 객체를 연결하기 위해 한 객체를 다른 객체로 주입시켜야 한다. 이때, 주입시켜주는 역할을 위해 IoC/DI 컨테이너가 필요하다. 의존성 주입은 제어의 역전(IoC)라고 불리기도 한다. 어떠한 객체를 사용할지에 대한 책임은 프레임워크에게 넘어갔고, 사용자는 수동적으로 주입받는 객체를 사용하기 때문이다. 한 객체가 어떤 객체에.. 2022. 8. 22.
[Spring] SMTP와 비동기 프로젝트에서 회원가입 시 메일 인증을 위해 서버에서 메일을 보내는 기능이 필요하다. 해당 기능을 사용하기 위해 SMTP (간이 우편 전송 프로토콜)에 대해 알아보고 사용해보자. SMTP (Simple Mail Transfer Protocol) 메일 전송에 사용되는 네트워크 프로토콜로 인터넷에서 메일 전송에 사용되는 표준이다. 메일을 송수신하는 서버를 SMTP 서버라고 한다. TCP 프로토콜을 사용하며 포트는 다음과 같다. 기본 TCP 포트: 25 TLS 포트: 587 SSL 포트: 465 SMTP 서버 메일을 보내는 사람: username@gmail.com 메일 주소에서 username@gmail.com는 SMTP 클라이언트가 될 것이고 gmail.com 주소는 메일을 송수신하는 SMTP 서버가 될 것이.. 2022. 8. 5.
[JPA] Spring Data JPA containing 관련 에러 프로젝트 진행 중 검색 기능을 구현하는 과정에 발생한 일이다. /api/search?keyword="검색어" RequestParam으로 넘어온 검색어를 포함한 데이터를 찾기 위해 Spring Data JPA를 사용했고 like 쿼리문을 사용하기 위해 다음과 같이 containing을 사용하여 작성했다. public interface SearchRepository extends JpaRepository { List findByTitleContaining(String keyword); } 다음과 같이 임의로 세 개의 post를 저장하고 private void savePost() { Post post = new Post(1L, "유교수님 운영체제 전공책 팔아요~"); Post post2 = new Post(2.. 2022. 5. 5.
[Spring] Entity에 Enum 데이터 사용하기 Entity 클래스를 생성할 때 enum 클래스를 사용하곤 한다. 다음과 같이 Enum class가 있다. public enum OrderStatus { ORDER, CANCEL } Order 클래스에서 위의 Enum 데이터를 사용하려면 다음과 같이 생성한다. @Entity @Getter @Setter public class Order { ... @Enumerated(EnumType.STRING) private OrderStatus status; ... } 이때, Enumerated 어노테이션에는 두가지의 EnumType이 존재한다. - ORDINAL : enum 순서 값을 저장한다. - STRING : enum 이름을 저장한다. 위 클래스에서 만약 ORDINAL로 지정한다면, ORDER : 1, CAN.. 2022. 3. 17.