Back-End 9

[SpringBoot] 카카오 로그인 구현 (feat. JWT)

카카오 로그인은 여러 방법으로 구현할 수 있는데, 이번 프로젝트에선 카카오에서 제공하는 토큰이 아닌 자체 JWT를 생성하는 방식으로 진행했다. 우선 기본적인 개발 방식은 카카오 공식문서를 참고했다. 카카오 로그인 동작 / 구현 순서1. (프론트) 카카오에게 로그인을 요청하고 인가코드를 받는다.2. (프론트) 백엔드로 인가코드를 전달한다.3. (백엔드) redirct-uri, client-id, 인가코드를 카카오에 보내면 카카오는 이를 인증 후 토큰을 발급해준다. 4. (백엔드) 카카오 토큰으로 유저정보를 요청해 받는다.5. (백엔드) 기존에 등록된 회원이 아닌 경우 회원가입을 하고, 자체 JWT를 생성하여 프론트에 전달한다.6. (프론트) JWT로 로그인을 처리한다. 카카오 개발자 애플리케이션 설정htt..

Back-End/SpringBoot 2024.11.18

[Spring] 스프링 특징 IOC, AOP, DI 이란?

Spring Framework의 주요 특징 IOC, AOP, DI 1. IOC (Inversion of Control) : 제어의 역전Spring 컨테이너가 개발자 대신 의존성을 주입하고 객체의 생명주기를 관리하도록 하여 객체의 흐름을 관리 자바 기반 어플리케이션 개발시, 객체의 생성부터 소멸까지 및 의존 관계와 같은 흐름을 조작하고 결정하는 것은 개발자에게 있다. 하지만, IOC 패턴 사용시 객체의 생성 및 관리 등 제어 흐름의 결정 권한을 Spring 컨테이너에게 위임하여 객체의 라이프사이클을 관리하는 것을 말한다. Container가 bean을 관리해주기에 제어의 역전이라고 한다.IOC의 장점객체 간의 결합도를 낮춤유연한 코드 작성테스트의 용이성을 향상2. AOP (Aspect Oriented Pr..

Back-End/Spring 2023.12.14

[Java] 가비지 컬렉션(Garbage Collection, GC)이란?

1. 가비지 컬렉션의 개념 - 자바가 실행되는 JVM 에서 사용되는 객체, 즉 Heap 영역의 객체를 관리해 주는 기능을 말한다. - 유효하지 않은 메모리인 가비지(Garbage)가 발생했을 때, JVM의 가비지 컬렉터가 불필요한 메모리를 알아서 정리해준다. - 이때, Stop The World와 Mark and Sweep 과정이 일어난다. 2. 가비지 컬렉션의 동작 방식 JVM의 Heap 영역은 Young(새로운 객체들이 할당되는 영역)과 Old(Young에서 오래 살아남은 객체들이 존재하는 영역) 2가지 영역으로 나뉘는데, GC가 실행되면 일반적으로 다음과 같은 단계를 따른다. 1. Stop The World 가비지 컬렉션을 실행하기 위해 JVM이 애플리케이션의 실행을 멈춘다. GC를 실행하는 쓰레드..

Back-End/Java 2023.12.12

[Spring] pom.xml / web.xml / servlet-context.xml / root-context.xml

📚 xml 파일xml 파일은 모두 Bean(객체)를 정의한다.📕 pom.xmljava, spring 버전 관리default값을 원하는 버전으로 변경해주면 된다. 1.8 4.2.4.RELEASE 1.8.8 1.7.14필요한 Library 설치maven project에 필요한 Library 들을 MVNrepository 에서 검색해 태그 안에 설치해주면 된다.org.aspectjaspectjrt${org.aspectj-version}org.aspectjaspectjweaver${org.aspectj-version} javax.servlet.jspjavax.servlet.jsp-api${jsp-version}providedjavax.servletjstl${jstl-version}📗 web.xmlw..

Back-End/Spring 2023.04.30

[Spring] Spring MVC

🌿 MVC (Model - View - Controller) 란?Application의 확장을 위해 Model, View, Controller 3가지 영역으로 분리한 것이다. Component의 변경이 다른 영역 Component에 영향을 미치지 않아 유지보수가 용이하고 Component간의 결합성이 낮아 프로그램 수정이 용이해 확장성이 뛰어나다. ModelService + Dao상태 쿼리에 대한 응답으로 변경을 View에 통지View사용자의 입력을 Controller에 전달Model을 화면에 표현ControllerApplication의 행위를 정의사용자 요청에 맞는 view를 선택 🌿 MVC 의 장/단점장점화면과 비즈니스 로직을 분리해 작업이 가능 -> 유지보수 용이영역별 개발로 인해 확장성 뛰어남..

Back-End/Spring 2023.04.30

[Spring] AOP (Aspect Oriented Programming)

AOP 등장 배경기존 OOP에서 핵심 관심 사항(core concern)과 공통 관심 사항(cross-cutting concern)을 여러 모듈에 중복 사용되는 한계를 해결하기 위해 AOP가 등장했다. 공통 관심 사항을 기준으로 프로그래밍함으로써 공통 모듈을 손쉽게 적용할 수 있게 한다.AOP 특징AOP는 핵심적인 기능에서 부가적인 기능을 분리Aspect 라는 모듈 형태로 만들어 설계하고 개발해 객체지향적인 가치를 지킬 수 있게하는 개념AOP 용어Target : 핵심기능을 담고 있는 모듈. 부가기능의 부여 대상Advice : 어느 시점에 공통 관심 기능 Aspect을 적용할지 정의. Target에 제공할 부가기능 담음JoinPoint : Aspect가 적용될 수 있는 지점. target 객체가 구현한 인..

Back-End/Spring 2023.04.28

[SpringBoot] SpringBoot란?

SpringBoot? 특징 Spring의 경우 library추가, dependency 설정 등 SpringFramework가 처리해야하는 여러 구성 및 설정파일을 setting해야했다. 하지만 SpringBoot는 이러한 것들을 모두 자동으로 설정해준다. 장점 project에 따라 자주 사용되는 library들이 미리 조합되어 있음 복잡한 설정을 자동으로 처리해 줌 tomcat을 내장 서버로 가져 WAS를 추가 설치 않아도 됨 WAS에 배포하지 않고 실행할 수 있는 JAR파일로 Web Application을 개발 할 수 있음 SpringBoot Project 생성 프로젝트 생성 New -> Spring Boot -> Spring Starter Project Name : 프로젝트 명 Type : gradl..

Back-End/SpringBoot 2023.04.27

[Spring] DI (Dependency Injection)

스프링 빈은 기본적으로 '싱글톤'으로 만들어진다. 그 외 방법으로 인스턴스 반환을 하게 하고싶은 경우 scope에 설정해주어야 한다. singleton : 스프링 컨테이너당 하나의 인스턴스 빈만 생성 (default) prototype : 컨테이너에 빈을 요청할 때마다 새로운 인스턴스 생성 request : HTTP Request별로 새로운 인스턴스 생성 session : HTTP Session별로 새로운 인스턴스 생성 🌽 스프링 빈 설정 (Annotation) 빈으로 사용될 클래스에 @Autowired annotation을 부여해 주면 자동으로 빈 등록 이때 반드시 context.xml파일에 component-scan을 설정해주어야 함 // servlet-context.xml (Web 관..

Back-End/Spring 2023.04.26

[Spring] Spring Framework란?

💎 Spring의 등장배경 웹 사이트가 점점 커지면서 엔터프라이즈급의 서비스가 필요하게 되었다. 점차 POJO + 경량 프레임워크를 사용하기 시작했고, EJB가 제공하는 서비스를 지원해 줄 수 있는 프레임워크 Spring이 등장했다. EJB (Enterprise JavaBean 1.0) : Low Level의 트랜잭션이나 상태관리, 멀티 쓰레딩, 리소스 풀링과 같은 복잡한 Low Level의 API를 이해하지 못해도 아무 문제 없이 애플리케이션 개발 가능 POJO + Framework : EJB서버와 같은 거창한 컨테이너 필요 없음 / 오픈소스 프레임워크라 무료 / 다양하고 많은 라이브러리 지원 / 모든 플랫폼에서 사용이 가능한 스프링 프레임워크 ❓ Spring이란? 자바로 Enterprise Appli..

Back-End/Spring 2023.04.25