TIL 38

+ 18 인증 // 인가 그것이 무엇인가 + JWT기반 인증

* 인증 (Authentication) :: 식별 가능한 정보(이름, 이메일)를 이용해서 서비스에 등록 유저의 신원 입증하는 과정 다시말해 서비스에 등록된 사용자에게만 서비스를 제공한다는 뜻 * 인가 (Authorization) :: 유저에게 특정 리소스에 대한 접근을 "인가" :: 인증만 가지고는 서비스를 운영하기에는 무리! :: 인증을 한 사용자에게 모든 서비스를 제공하게 된다면? :: 다른사람이 작성한 글이 다른사람에 의해서 수정되거나 삭제될 수 있다. :: 또한 인가는 항상 앞에 인증이라는 선행 프로세스가 필요함!!!! (이유 : 인증하지 않은 유저의 권한을 알지 못하기 때문) 인증 의 방식 1. 쿠키 - 세션 방식 (=서버 기반 인증 시스템 = 세션 기반 인증 시스템) ★해당 방식의 핵심은 사용..

TIL 2023.07.01

+17 Springboot DTO, CREATED, READ

DTO (Data Transfer Object) - 계층 간의 데이터를 교환을 하기 위해 사용하는 객체 // 데이터 전송 객체 - 로직을 가지지 않는 순수한 데이터 객체 (getter & setter만 가진 클래스) - 어떠한 비즈니스 로직을 가져서는 안되며, 저장, 검색,직렬화, 역직렬화 로직만 가져야 함. - 즉 Entity를 DTO형태로 변환 후 사용 직렬화란? DTO를 byte, Json, Xml 등의 형태로 변환하는 것 // 네트워크 통신에 사용하기 위한 형식으로 변환 역직렬화란? 디스크에 저장한 데이터를 읽거나, 네트워크 통신으로 받은 데이터를 메모리에 쓸 수 있도록 변환 DAO (Data Access Object) - 데이터베이스의 data에 접근하기 위한 객체 - 데이터베이스에 접근하기 위..

TIL 2023.06.30

+ 16 springboot IoC Container 와 Bean

용어 정리 IoC : 제어의 역전 DI : 의존성 주입 Bean : spring이 관리하는 객체 IoC Container : Bean을 모아둔 컨테이너 DI (의존성 주입)을 한다? 가장 먼저 해야할 일은 객체 생성! 의존성 주입이란? 디자인결합도를 느슨하게 되도록 하며, 의존관계 / 역전원칙 / 단일책임 원칙 을 따르도록 클라 단에서 생성에 의한 의존성을 클라이언트의 행위로부터 분리하는 것 ex) public class Dog{ private Animal animal; public Dog(){ this.animal = new Dog; } } 의존성주입에 대한 예시 :: Dog객체는 Animal객체에 의존한다. 하지만 이렇게 되면 문제점이 생긴다. - Animal을 수정하면 Dog도 수정이됨 - 부모객체..

TIL 2023.06.29

+15 제네릭스(Genrics)

스프링을 공부하면서 더욱 더 제네릭스의 필요성을 느껴 간단하게 정리해보려 한다. 제네릭(Generics) :: 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법 사용 :: 꺽쇠 기호 사용, 기호 안에 타입명을 기재 :: 타입을 변수화 한 기능이라고도 표현함 / 객체에 타입을 지정해주는 것이라 보면 된다 :: 여러 개가 필요한 경우 2개, 3개 등 계속해서 추가활 수 있다, ※ 클래스 초기화할때는 제네릭 타입을 갯수에 맞게 넘겨주면 된다. 주의사항 :: !!!! static 멤버에는 제네릭 타입이 올수가 없다!!!! class Sample { public void someMethod() { // Type parameter 'T' cannot be instantiated directly T t =..

TIL 2023.06.28

+14 spring boot의 필수 !Lombok application.properties

Lombok 자바 프로젝트를 진행하는데 있어서 거의 필수라고 느껴졌다. 필수적으로 필요한 메서드 / 생성자를 자동생성 해준다. 코드를 절약할 수 있고 편의성 또한 최고였다. package com.sparta.springprepare; import lombok.*; public class Memo { private String username; private final String contents; } 해당 코드 처럼 import lombok을 해서 사용 그러면 해당 필드값의 getter/setter 메서드와 생성자를 자동으로 생성해 준다. 클래스 위에 롬복 @Getter를 추가한 후 컴파일된 코드를 확인해보면 이처럼 직접 작성하지 않은 getUsername(), getContents() 메서드가 자동으로..

TIL 2023.06.25

+13 API / RESTful API / Apache Tomcat

API API(application programming interface) :: 다른 소프트웨어 시스템과 통신(소통) 하기 위해 따라야 하는 규칙 API는 개발자들같의 약속같은 개념이다 서로 다른 애플리케이션이 약속한 방식의 API요청을 수행하면 정해진 결과물을 반환하게 된다. RESTful API ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ★★★★★★★★★★★★★★★ RESTful API ★★★★★★★★★★★★★★ ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ RESTful API는 API 작동 방식에 대한 조건을 부과하는 소프트웨어 아키텍처 여기서 아키텍처란? 간단하게 정리하면 목표하는 대상에 대하여 그 구성과 동작 원리, 구성요소간의 고나계 및 시슽 ㅔㅁ..

TIL 2023.06.24

+12 SPRING BOOT / Gradle

Gradle = 빌드 자동화 시스템 자바코드를 자동으로 빌드해줌 Gradle를 사용하면 자바코드를 실행 가능한 jar파일로 만들어줌 build.gradle 외부 라이브러리를 dependencies 에 작성하면 외부라이브러리들을 Gradle이 해당 라이브러리들을 Maven Repository와 같은 외부 저장소에서 자동으로 다운로드 해옴 (편의성 good) Maven Repository = 라이브러리 저장소 쉽게 우리 같은 개발자들이 코드에만 집중할 수있도록 도와주는 코드의 묶음 그럼 Gradle이 다운로드 해온 라이브러리는 어디에서 확인할까? External Libraries

TIL 2023.06.24

+11 (주특기 시작) HTTP란? 무엇일까

오늘부터 시작한 주특기주가 시작이 되었다 3주간 진행되는데 할 양이 어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마하게 많다.. 그래서 오늘부터 TIL은 주특기 차에 배우는 내용들을 하나씩 정리를 할 예정이다. 먼저 HTTP란? 통 . 신 . 규 . 약 :: 데이터를 주고 받는 양식을 정의한 통신 규약 중 하나이다. :: 컴퓨터끼리 데이터를 주고 받을 때 정해둔 약속 클라이언트가 서버에 요청(Request)을 한다. 서버는 그 요청을 응답(..

TIL 2023.06.24

+ 10 인텔리제이 디버그 디버깅

디버그 :: 버그를 고친다 는 뜻 :: 프로그램에서 나는 오류를 수정하는 작업 디버깅? :: 프로그래밍 과정에서 발생한 오류를 파악하고 수정하는 일련의 과정 Breaking Point :: Breaking Point 여러개 설정할 수 있따. :: 디버그시 Breaking Point 가 걸린 라인이 호출이 됨 :: 디버그를 할 때, 해당하는 Breaking Point 없으면 로직이 쭉 실행된다. Resume = > 다음 Break Point 로 이동 Step Over => Break 된 지점의 다음 Line으로 이동 Step Into => Break된 라인의 해당하는 로직 내부로 이동 Step Out => Step Into 해서 들어온 지점으로 빠져 나옴 Force Step Into => stepping에..

TIL 2023.06.22

+ 9 자바 인터페이스란? 다형성

정말정말정말정말정말정말정말정말정말정말정말정말정말정말정말정말정말정말중요하다는 자바에 있어서 객체지향에 있어서 빠질 수 없는 개념 인터페이스 다형성 인터페이스란? 클래스에서 메소드를 구현할 수 있도록 강제 할 수 있는 기능 쉽게 말하면 객체의 사용방법을 가이드라인 하는 것! 인터페이스는 추상메서드와 상수로만 이뤄져있다. 그래서 인터페이스로는 인스턴스 사용이 불가!!! + 자바 8부터는 디폴트메서드와 static메서드도 사용가능 인터페이스의 특징 ★ 인터페이스는 interface 키워드를 사용해서 정의한다. ★ 인터페이스는 상수와 추상메서드로만 구성되어 있다. 자바 8부터는 디폴트메서드와 static메서드도 사용가능 ★ 인터페이스 안에 있는 상수는 모두 public static final 타입이다 (생략가능)..

TIL 2023.06.20