springboot 19

[SpringBoot] Session을 활용한 회원가입/로그인 유지

세션 로그인 코드 보러가기 GitHub - GDG-on-Campus-SKHU/24-25-Server-Assignment-05Contribute to GDG-on-Campus-SKHU/24-25-Server-Assignment-05 development by creating an account on GitHub.github.com  🎈로그인이란?로그인은 중요한 데이터와 리소스를 보호하기 위해 컴퓨터 시스템과 애플리케이션에서 사용되는 일반적인 보안 수단입니다.로그인은 사용자가 특정 시스템(애플리케이션, 웹사이트 등)에 접근할 수 있도록 인증하는 절차라고 할 수 있습니다. 이 과정에서 사용자는 일반적으로 사용자 이름(또는 이메일 주소)과 비밀번호 같은 자격 증명(credentials)을 입력합니다. 시스템은..

springboot 2024.11.01

[SpringBoot] Spring Boot로 REST API 만들기

REST API 란?REST : Representational State Transfer 의 약자로 '네트워크에서 통신을 구성할 때 이런 구조로 설계하라는 지침' 정도로 볼 수 있다.API : Application Programming Interface 의 약자로 응용 프로그램 프로그래밍 인터페이스를 뜻한다. 프로그램을 작성하기 위한 일련의 부프로그램, 프로토콜 등을 정의하여 상호 작용을 하기위한 인터페이스 사양을 말한다.REST API : API는 주로 프로그램 내부 단에서 이루어진다. 하지만 보다 다양한 분야에 쓰일수 있도록 '네트워크'와 '웹'에 맞춰진 API 통신 아키텍쳐가 등장했한것이 REST API이다. 주로 웹 API 쪽에서 사용된다. 웹 API = REST API 라고 봐도 볼 수있다.현실..

springboot 2024.09.28

[SpringBoot] IoC/DI 가 뭘까?

IOC(Inversion of Control)란?지금까지 자바 코드를 작성해 객체를 생성할 때는 객체가 필요한 곳에서 직접 생성했다. 다음을 보면 B 객체를 사용하기 위해 클래스 A에서 객체를 직접 생성한다.제어의 역전은 다른 객체를 직접 생성하거나 제어하는 것이 아니라 외부에서 관리하는 객체를 가져와 사용하는 것을 말한다.이 말도 듣기에는 어렵게 들릴 수 있는데. 코드를 보면 훨씬 이해가 쉽다. 방금 본 위 예제에 제어의 역전을 적용하면 다음과 같이 코드의 형태로 바뀐다.이전과는 다르게 클래스 B 객체를 직접 생성하는 것이 아니므로, 어딘가에서 받아와서 사용하고 있다고 추측해볼 수 있다. 이처럼 제어의 역전을 적용하면 객체를 외부에서 관리하게 되고, 실제로 사용할 때에는 외부에서 제공해주는 객체를 받아..

springboot 2024.08.28

[SpringBoot] orElse와 orElseGet 차이점

끄적끄적 프로젝트를 하던 중 orElse와 orElseGet의 차이점 코드리뷰를 받아서 공부하게 되었다. orElse와 orElseGet두 메서드를 확인하기 위해서 Optional 클래스를 보면 이런 내용으로 정의되어 있다. 1. 둘 다 결과적으로는 value가 null일 때 other을 return하는 형태이다.2. 차이를 보자면 orElse는 코드가 실행되면 먼저 값을 가져오고, orElseGet은 코드가 실행될 때는 진행하지 않다가 null을 만나 호출되면 값을 가져온다 (if문과 비슷)3. 쉽게 정리하자면메서드에서 넘어온 값이 null이면 수행되는 것은 둘이 동일.orElse는 메서드에서 넘어온 값이 null이던 아니던 전달된 값을 가장 먼저 실행한 후, 넘어온 값이 null이라면 먼저 실행됐던 ..

springboot 2024.08.10

[SpringBoot] GPT 3.5 AI 사용하기

생산형 AI 기능을 쓰고 싶은 개발자는 어디에나 있을 것이다. 오늘은 Spring에서 AI를 사용하는 법을 알아보자. AI 기능을 빌려오는 느낌이고 직접 구현이 아니다. 참고 바란다. 1. 의존성 추가 implementation 'org.springframework.ai:spring-ai-openai-spring-boot-starter:0.8.0-SNAPSHOT' repositories { mavenCentral() maven { url 'https://repo.spring.io/milestone' } maven { url 'https://repo.spring.io/snapshot' } } 해당 의존성은 Spring Boot 프로젝트에 OpenAI와 연동할 수 있는 기능을 제공한다. 2. OpenAI A..

springboot 2024.03.24

[SpringBoot] KOMORON을 이용해서 형태소 분석하기

프로젝트를 진행하다가 워드 클라우드를 구현해야 할 일이 생겼다. 워드 클라우드란?? 처음 접근 알고리즘을 직접 짜려고 시도했다. 단순히 단어의 개수를 반환하면 된다고 생각했기 때문이다. 그 반환 단어를 프론트에서 받아서 크기를 기준으로 워드 클라우드를 구성하면 되지 않을까? 라고 생각했다. 하지만 우리의 서비스는 문장을 받는 '메모'이다. 때문에 위에 내가 직접 알고리즘을 짜는 방법은 불가능했다. 라이브러리 발견 그렇게 구글링을 하다가 https://github.com/shineware/KOMORAN (코모론) 라이브러리를 발견했다. 해당 라이브러리는 한국 형태소를 분석하는 기능을 가지고 있는 신기한 라이브러리였다. 명사만 필요한 나의 서비스에 정확히 일치했다. 구현 1. 의존성 추가 repositori..

springboot 2024.03.23

[SpringBoot] 인텔리제이 안에서 데이터베이스 접근하기

MysqlWorkbench로 접근하는 게 귀찮기도하고, 앱도 그리 좋지 않은 거 같고, 수정도 힘들고...... 인텔리제이로 데이터베이스를 접근해보자. - 오른쪽에 나와있는 DataBase 버튼을 클릭한다. - 자기가 사용하는 툴을 선택한다. 필자는 MySQL - user와 비밀번호를 입력한다 - 이제 들어와지면 끝났다. 자신의 database 이름으로 들어가면 테이블과 컬럼들을 확인할 수 있다.~~ 테이블을 더블클릭하면 안에 데이터를 확인할 수 있을 것이다. 추가로 배포한 서버도 IP주소와 DB아이디, 비밀번호만 알면 똑같이 들어가서 확인 가능하다!

springboot 2024.03.23

[SpringBoot] Swagger 간편 어노테이션 정리

앞 글에 연계해서 스웨거 어노테이션을 써 보자~ 1. RequestDto @NotBlank(message="메모 내용을 입력해야 합니다.") @Size(min = 1, max = 60, message = "1 글자 이상, 60 글자 이하가 아닙니다.") @Schema(description = "걱정 메모 내용", example = "너무 힘들어요.") @NotNull private String worryText; 우리가 봐야 할 어노테이션은 @Schema다. 딱 보면 알겠지만, 해당 Dto를 사용하게 될 시에 스웨거를 보면 "worryText" : "String"이 아닌 아래와 같은 문구로 대체된다. 프론트가 보고 이해하기 더 쉽다!! 2. Controller @Operation(summary = "걱정..

springboot 2024.03.21

[SpringBoot] Swagger 사용법

고민하게 된 이유 처음 프로젝트를 할 때는 아무 생각 없이 코드만 적는, 프론트를 생각하지 않는 방법으로 진행했다. 그러다가 swagger를 알게 되면서, 각종 오류 메세지와 api를 간편하게 전달할 수 있다는 사실을 알았다. 스웨거 (Swagger)란? 스웨거는 Web API 문서화를 위한 도구이다. 스웨거 홈페이지에서는 스웨거를 OAS(Open API Specification)이라고 소개하고 있다. 말 그대로 API들이 가지는 명세(Spec)을 관리하기 위한 프로젝트이다. Web API를 수동으로 문서화 하는 것은 굉장히 힘든일인데, Web API의 스펙이 변경되었을 때 문서 역시 변경되어야 하는데 이를 유지하는 것이 쉽지 않다. Swagger를 사용하면 Web API가 수정되더라도 문서가 자동으로..

springboot 2024.03.21