Spring Boot 45

[Spring boot] 관점 지향 프로그래밍(AOP)

관점 지향 프로그래밍(AOP : Aspect-Oriented Programming)객체지향 프로그래밍(OOP : Object-Oriented PRogramming)과 다른 것AOP란?AOP는 관점을 기준으로 묶어 개발하는 방식을 의미 == 핵심 로직과 부가 기능을 분리해서 코드를 깔끔하게 관리하는 방식여기서 관점(aspect)이란 어떤 기능을 구현할 때 그 기능을 ‘핵심 기능’과 ‘부가 기능’으로 구분해 각각을 하나으로 보는 것을 의미그럼 ‘핵심 기능’과 ‘부가 기능’의 의미를 알아보자핵심 기능비즈니스 로직을 구현하는 과정에서 비즈니스 로직이 처리하려는 목적 기능을 말한다.ex → 클라인어트로부터 상품 정보 등록 요청을 받아 DB에 저장하고 그 상품 정보를 조회하는 비즈니스 로직을 구현했다면 (1) 상품..

[Spring boot] 의존성 주입(DI)

의존성 주입(DI)의존성이란?MyController는 MyServiceImpl에 의존 ****하고 있다. 즉, 동작하기 위해 다른 객체가 필요한 상황 == "의존성"public class MyController { private MyService service = new MyServiceImpl();} 의존성 주입이란?제어 역전의 방법 중 하나로 사용할 객체를 직접 생성 하지 않고 외부 컨테이너가 생성한 객체를 주입받아 사용하는 방식 의미스프링에서 의존성을 주입받는 방법 세 가지생성자를 통한 의존성 주입필드 객체 선언을 통한 의존성 주입세터(setter) 메서드를 통한 의존성 주입스프링에서는 @Autowired라는 애너테이션(annotation)을 통해 의존성을 주입할 수 있다. 1. 생성자를 통..

[Spring boot] 제어 역전(loC)

일반적인 자바 개발의 경우 객체를 사용하기 위해 다음과 같은 코드를 사용함public interface MyService { public String getHello();}@Servicepublic class MyServiceImpl implements MyService { @Override public String getHello() { return "Hello"; }}@RestControllerpublic class NoDIController { private MyService service = new MyServiceImpl(); // 직접 생성 @GetMapping("/no-di/hello") public String getHello() { ..

[AWS] EC2를 사용해서 AWS 배포

aws 로그인 해서 인스턴스 검색 인스턴스 시작 공짜 버전인스턴스 유형은 프리티어를 사용하고 있다면 t2.micro 로 설정해주셔야 합니다.다른 유형으로 설정하면 과금요소가 추가됨 키페어 다운로드 했는데 내 Mac → Key에 있음 네트워크 설정 이제 생성한 인스턴스의 보안 그룹을 수정보안 그룹이란?AWS 에서 제공하는 방화벽으로 인바운드 규칙, 아웃바운드 규칙이 존재함인바운드 규칙(inbound) : 외부에서 EC2나 RDS 등의 내부로 접근할때 사용되는 방화벽 규칙아웃바운드 규칙(outbound) : EC2나 RDS 등의 내부에서 외부로 접근할때 사용되는 방화벽 규칙우리는 EC2에 접속해서 서버를 띄우는것이 목적이기 때문에 인바운드 규칙만 건드려주도록 하자EC2 메뉴의 네트워크 및 보안 탭의..

AWS/EC2 2025.01.05

[Spring boot] @ResponseEntity @ResponseBody 차이

ResponseEntity는 응답 헤더, 본문 양식을 맞추어 반환하므로 @ResponseBody자바 스프링 부트에서 @ResponseEntity와 @ResponseBody는 모두 컨트롤러에서 HTTP 응답을 작성할 때 사용되지만, 그 목적과 사용 방식에 차이가 있다@ResponseBody@ResponseBody는 메서드가 반환하는 객체를 HTTP 응답 본문으로 직렬화하여 클라이언트에 직접 전송하도록 하는 어노테이션용도: 주로 RESTful API를 구현할 때 사용하며, 메서드의 반환 값을 JSON이나 XML과 같은 형식으로 변환하여 클라이언트에 전송기본 동작: 메서드가 반환하는 객체는 HttpMessageConverter에 의해 변환되어 HTTP 응답 본문으로 사용ex → "Hello, World!" 문..

[Spring boot] JPA 쿼리 메서드 네이밍 및 테이블 및 칼럼 이름 매핑

Spring Data JPA에서 쿼리 메서드 네이밍은 메서드 이름을 기반으로 SQL 쿼리를 자동으로 생성하는 방식이를 통해 개발자는 SQL을 직접 작성하지 않고도 데이터베이스에 접근하고 원하는 데이터를 조회가능1. 쿼리 메서드 네이밍 규칙Spring Data JPA는 쿼리 메서드 이름을 다음과 같은 규칙에 따라 작성findBy: 데이터를 조회할 때 사용countBy: 데이터의 개수를 셀 때 사용deleteBy: 특정 조건에 맞는 데이터를 삭제할 때 사용existsBy: 특정 조건에 맞는 데이터가 존재하는지 확인할 때 사용위의 키워드 뒤에는 필드 이름이 오게 된다. 필드 이름은 엔티티 클래스의 속성과 일치해야 함ex → Users 엔티티에 email이라는 필드가 있다고 가정하면, 이메일로 사용자를 찾기 위..

[Spring boot] users 데이터베이스 생성과 로그인

카카오 로그인을 한 후 응답값을 고민을 좀 해봐야한다.postgreSQL문으로 User table을 만들어보자 PostgreSQL에서 User → 예약어라서 Users로 하던지 “User”로 해야됨 create table User(user_id INT auto_increment, email VARCHAR(100) not null, nickname VARCHAR(100) not null, profile VARCHAR(2000), primary key(user_id));ERROR: syntax error at or near "User"LINE 1: create table User(user_id INT auto_increment, email VARCHAR(... User 클래스 이지만 테이블에 실제 이름은 ..

[Spring boot] 카카오 로그인 Oauth 2.0

카카오 디벨로퍼 사이트 접속Kakao Developers Kakao Developers카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.developers.kakao.com 내 애플리케이션에서 앱 이름, 사업자 정보 등 기입 사업자 정보는 그냥 앱이름이랑 같이했음이렇게 4가지가 있는데 REST API 키를 복사한다 이게 서버에서 사용할 client-id값이 된다.밑에 플랫폼에 들어가서 이렇게 작성 이제 여기에 들어가주면 됨동의 항목 설정이메일도 필요하니이제 활성화 설정을 on을 해주고리다이렉트 url을 이렇게 작성하는데 밑 처럼 작성을 한다.Spring OAuth2 Client 라이브러리를 사용하면 기본적으로 Red..