Spring 13

[SprinBoot] 스프링 AWS EC2 배포, RDS 연동 후기

이번과제 중 재일 많은 시간을 소비한 파트는 AWS연동 파트였다. AWS를 처음 사용해 봐서 세팅을 하는데 어려움이 있었는데 다음에 AWS 연동 세팅을 할 때 더 수월히 작업을 하기 위해 블로그에 해결한 방법들을 남겨 보려고 한다. AWS EC2 (Elastic Compute Cloud)EC2는 AWS에서 제공하는 클라우드 기반 가상 서버이다. 사용자는 EC2 인스턴스를 생성하여 클라우드에서 가상 서버를 실행할 수 있다.기능 및 특징:가상 서버 제공: EC2는 사용자가 필요할 때마다 가상 서버를 생성하고, 다양한 운영체제(예: Linux, Windows)를 선택하여 실행할 수 있다.확장성: 사용자는 필요에 따라 서버의 크기를 조정할 수 있으며, 여러 개의 서버 인스턴스를 쉽게 생성하거나 종료할 수 있다...

Spring 2024.10.11

[SpringBoot]MyBatis

MyBatis 스프링은 MyBatis와 Spring Framework를 통합하는 라이브러리다. MyBatis는 SQL 쿼리를 명시적으로 작성할 수 있는 장점이 있고, Spring은 애플리케이션을 전반적으로 관리하는 프레임워크다. 이 두 가지를 함께 사용하면 데이터베이스 연동을 더 효율적으로 처리할 수 있다.주요 특징SQL과 XML의 명시적 사용: MyBatis는 ORM(객체 관계 매핑) 프레임워크지만, SQL을 직접 작성하고 실행할 수 있다. 따라서 SQL의 자유도를 유지하면서도 객체를 매핑할 수 있다.Spring과의 통합: MyBatis 스프링 모듈은 Spring의 DI(Dependency Injection)와 트랜잭션 관리 기능을 쉽게 사용할 수 있게 한다. 이를 통해 트랜잭션을 자동으로 관리하고, ..

Spring 2024.10.01

[SpringBoot]Api Response

Spring Boot에서 ApiResponse는 REST API 개발 시 클라이언트에게 응답을 보낼 때 사용되는 구조를 정의하는 클래스이다. API 호출이 성공했는지 실패했는지, 그리고 그에 따른 데이터를 포함하여 다양한 정보를 응답으로 보낼 수 있다.ApiResponse 기본 구조ApiResponse 객체는 주로 다음과 같은 필드를 가진다:status (HttpStatus): 응답의 상태를 나타내며, 성공 또는 실패 여부를 표시한다. HttpStatus는 HTTP 응답 상태 코드를 담고 있다. (예: 200 OK, 404 Not Found)message (String): 응답에 대한 설명 메시지를 포함한다. 성공 또는 오류에 대한 메시지를 클라이언트에게 전달한다.data (Object): 응답 데이터이..

Spring 2024.09.06

[SpringBoot] ArgumentResolver 사용하여 jwt 정보 가져오기

스프링 부트에서 API controller를 생성할 때 가끔 정보를 가져오기 위해 httpservletrequest에서 정보를 받아와 사용하였다. 하지만 Service에 httpservletreqeust를 바로 전달하는 것은 3 Layer Architecture에 위반한다고 들어 Argument Resolver를 사용하는 방법을 이번 프로젝트에 응용해 보았다. 🚀 ArgumentResolver ArgumentResolver는 Spring MVC에서 컨트롤러 메서드의 매개변수를 해석하고 주입하는 기능을 확장하기 위해 사용된다. 일반적으로, Spring MVC는 기본적인 매개변수 유형에 대해 자동으로 매핑을 해주지만, 복잡한 객체나 특수한 상황에서는 이 기능을 확장해야 할 때가 있다. 이때 Argument..

Spring 2024.09.04

[SpringBoot]Entity 연관관계 방향성

Mysql 등 데이터 베이스에서는 테이블간 join 을 사용하면 각각의 테이블로 부터 정보를 받아올수있는 양방향 탐색을 실시할수있다. 하지만 Entity 클래스 객체들간에는 참조방향 을 정해주어야한다. 양방향 매핑은 데이터 접근의 편리하지만 객체간 상호작용이 많을경우 관계의 복잡성으로 인해 성능저하와 최적화에 무리를 줄수있다.🔡 예제 코드 @Entity@Table(name = "food")public class Food { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; private double price; @ManyToOne @JoinColum..

Spring 2024.08.29

[SpringBoot] NaverOpen API 사용

🔑 API 키 발급네이버 API를 사용할려면 Client-Id 와 Client-Secret 키를 받아야 한다. 키를 받으려면 먼저 Naver Developers에 들어가 로그인을 한뒤, 애플리케이션 등록을 클릭해주면된다. 애플리케이션 등록 창에서는 본인의 에플리케이션 이름 (프로젝트 명) 을 적어준뒤 사용할 API 와 서비스 환경을 지정해주면된다. SpringBoot 에서는 서비스환경에 Web환경을 설정한뒤 배포를 하지않은 LocalHost에서 활용을할 예정이라 URL에 본인의 LocalHost를 등록해주면된다.등록을 마치고나면 Naver Open Api 를 사용할수있는 Clinet-Id 와 Client-Secret 값들을 받아 올수있다. 이값들은 Naver Open API 서버와 통신을 할떄 http..

Spring 2024.08.29

[SpringBoot]환경변수 application.properties

application.propertiesSpring에는 src/main/resource 경로에 위치한 application.properties 파일이 있다.spring.datasource.password = ${DATASOURCE_PASSWORD}jwt.secret.key = ${JWT_SECRET_KEY}admin.token =${ADMIN_TOKEN} 해당 파일에는 보안에 중요한 값들이 저장될 수도 있어 깃헙 push 나 공유를 할 때 applicaion민감한 정보들이 유출될 수 있어 환경변수를 사용하는 것이 좋다.  환경변수 사용방법위의 예시처럼 속성명=${환경변수명}  저장을 한뒤 해당 환경 변수명을 intellij에서 설정해 주면 된다.설정 방법은 confiuration -> Edit을 클릭한뒤..

Spring 2024.08.28

[SpringBoot]Jpa Auth Filter

JPA(Java Persistence API)에서 "Filter"는 엔터티(Entity)에 대한 특정 조건을 걸어 데이터를 필터링하는 데 사용되는 개념이다. JPA 자체에는 기본적으로 필터라는 기능이 없지만, Hibernate와 같은 JPA 구현체를 사용할 때는 @Filter 애노테이션을 활용해 엔터티에 필터링 로직을 적용할 수 있다.🚀 @Filter 개념@Filter는 특정 조건에 따라 엔터티를 자동으로 필터링하는 데 사용된다. 예를 들어, 활성화된 사용자만 조회하고 싶을 때, 해당 필터를 사용하면 쿼리마다 조건을 추가하지 않아도 된다. 필터는 주로 다중 테넌트(Multi-tenancy) 구조나 데이터에 대한 소프트 삭제(soft delete), 애플리케이션의 보안 인증(Authentication)과..

Spring 2024.08.26

[SpringBoot] Cookie & JWT

Spring Boot에서 Cookie와 JWT(Json Web Token)는 웹 애플리케이션에서 사용자 인증 및 세션 관리를 위해 자주 사용된다. 두 가지는 서로 다른 방식으로 사용되며, 그 특성에 따라 상황에 맞게 선택할 수 있다.🍪 CookieCookie는 사용자의 브라우저에 저장되는 작은 데이터 조각으로, 서버가 클라이언트를 식별하거나 세션 정보를 저장하기 위해 사용된다.동작 방식:클라이언트가 서버에 요청을 보내면, 서버는 응답과 함께 Cookie를 생성하여 클라이언트에게 보낸다.클라이언트는 이 Cookie를 브라우저에 저장하고, 이후의 요청에서 이 Cookie를 서버로 다시 전송한다.서버는 이 Cookie를 확인하여 클라이언트를 식별하거나 세션을 유지한다.사용 예:사용자 세션 유지: 서버는 사용..

Spring 2024.08.21

[Spring Boot] JpaRepository

JpaRepository는 Spring Data JPA에서 제공하는 인터페이스로, Spring Boot 애플리케이션에서 데이터베이스와 상호작용하기 위해 사용된다. JpaRepository는 기본적인 CRUD(Create, Read, Update, Delete) 작업과 더불어 페이징 및 정렬 기능을 간편하게 구현할 수 있는 메서드들을 제공한다. ✏️주요 특징 및 개념 Repository 인터페이스 계층 구조:JpaRepository는 CrudRepository와 PagingAndSortingRepository의 하위 인터페이스이다. 각 계층은 다양한 데이터 액세스 기능을 제공한다:CrudRepository: 기본적인 CRUD 작업을 위한 메서드를 제공한다.PagingAndSortingRepository: ..

Spring 2024.08.20