Java - Spring 13

OAuth2.0

1. OAuth2.0 (Open Authorization)OAuth(Open Authorization의 약자)는 액세스 위임을 위한 개방형 표준으로, 인터넷 사용자가 비밀번호를 제공하지 않고도 다른 웹사이트의 정보에 대한 액세스 권한을 웹사이트나 애플리케이션에 부여하는 방법으로 일반적으로 사용됩니다. (위키피디아 출저) 뭔소린가 싶지만 쉽게 말해 이미 가입한 어플리케이션이나 웹사이트의 회원정보로 새로운 어플리케이션이나 웹사이트에 회원가입, 로그인하는 기능으로 우리가 자주 접하고 사용해본 기능이다. 로그인 시 해당 어플리케이션이나 웹사이트에 ID, 비밀번호를 포함한 여러 개인정보를 제공하지 않고, 신뢰할만 한 어플리케이션의 Open API와 통신하여 사용자의 인증을 처리해주는 방식이다. 2. OAuth2..

Java - Spring 2025.04.30

spring 심화 (3)

Bean 생명주기 생명주기와 콜백 - 콜백 메서드는 Spring Bean의 생명주기에서 특정 시점에 실행되도록 설정된 메서드로 초기화 혹은 종료 시점에 필요한 작업(리소스 초기화, 정리)을 처리할 때 주로 사용된다. Bean 생명주기- Spring은 Bean의 생성과 관리, 소멸까지 자동으로 처리한다.- 개발자가 직접 객체의 생명주기를 관리할 필요가 없다. 1. Spring Container 생성- 애플리케이션이 실행되면 Spring은 ApplicationContext 또는 BeanFactory와 같은 컨테이너를 생성한다.- 컨테이너는 @Configuration, @ComponentScan 또는 XML 파일 등의 설정을 통해 Bean 정의 정보를 읽는다. 2. Bean 인스턴스 생성- 컨테이너는 필요한 ..

Java - Spring 2025.04.21

spring 심화 (2)

1 : N 연관관계 연관관계 매핑- JPA 연관관계 매핑을 통해 데이터베이스 테이블 간의 관계를 객체 지향적으로 표현하여 엔티티 클래스들 간의 관계를 설정한다. JPA를 통해 연관관계를 매핑하면 SQL을 직접 작성하지 않고도 객체 간의 관계를 활용하여 쉽게 데이터를 조회하고 조작할 수 있다. 연관관계 매핑- N:1, 1:N, 1:1, N:M 연관관계- 단방향, 양방향 연관관계- 연관관계의 주인 연관관계 설정 Annotation- N:1 : @ManyToOne → 가장 많이 사용된다.- 1:N : @OneToMany- 1:1 : @OneToOne- N:M : @ManyToMany → 조심해서 사용해야 한다. 단방향, 양방향테이블- 외래 키(FK) 하나로 모든 테이블 JOIN이 가능하다. 객체- 외래키가 있..

Java - Spring 2025.04.19

spring 심화 (1)

HttpMessageConverterHttpMessageConverter- View를 응답하는 것이 아닌, Rest API(HTTP API)로 JSON, TEXT, XML 등의 데이터를 응답 Message Body에 직접 입력하는 경우 HttpMessageConverter를 사용한다. + 1. SSR → @Controller + View Template → 서버 측에서 화면을 동적으로 그린다. 2. CSR → @RestController + Data → 클라이언트 측에서 화면을 동적으로 그린다. 3. 실제로는 두가지 기술이 함께 사용되는 경우가 많다. HttpMessageConverter 동작 순서 - HTTP 응답 메세지 Body에 데이터를 직접 입력 후 반환한다.- 요청 Accept Hea..

Java - Spring 2025.04.18

spring 숙련 (3)

개요객체와 관계형 데이터베이스- 객체는 클래스를 통해 만들어지며 속성(field)와 기능(method)를 포함하며 관계형 데이터베이스는 데이터를 테이블 형식으로 표현하며 각 테이블은 열(column)과 행(row)으로 구성된다. 객체 지향 언어 Java- 객체를 저장할 수 있는 다양한 종류의 Database1. RDB(무결성, 일관성)2. NoSQL3. File4. 기타 등등..- 관계형 데이터베이스와 객체 지향의 패러다임 불일치 문제가 발생한다. 관계형 DB에 객체 저장 시 발생하는 문제점1. 리소스별 CRUD 반복- INSERT, UPDATE, SELECT, DELETE - Java Object to SQL- SQL to Java Object 2. 객체의 수정Tutor 객체 public class T..

Java - Spring 2025.04.16

spring 숙련 (2)

CookieCookie- 사용자의 웹 브라우저에 저장되는 정보로 사용자의 상태 혹은 세션을 유지하거나 사용자 경험을 개선하기 위해 사용된다. Cookie를 사용하는 이유 1. HTTP는 Stateless, Connectionless 특성을 가지고 있다.2. Client가 재요청시 Server는 이전 요청에 대한 정보를 기억하지 못한다.3. 로그인과 같이 상태를 유지해야 하는 경우가 발생한다.4. Request에 사용자 정보를 포함하면 해결이 된다.- 로그인 후에는 사용자 정보와 관련된 값이 저장되어 있어야한다.5. 브라우저를 완전히 종료한 뒤 다시 열어도 사용자 정보가 유지되어야 한다. + 서버에 전송하지 않고 브라우저에 단순히 데이터를 저장하고 싶다면 Web Storage(localStorage, se..

Java - Spring 2025.04.15

spring 숙련 (1)

객체지향설계SOLID 원칙- 객체 지향 설계의 5가지 기본 원칙, 소프트웨어 설계에서 유지보수성, 확장성, 유연성을 높이기 위한 지침을 제공한다. SOLID 원칙의 종류1. 단일 책임 원칙 SRP(Single Responsibility Principle) - 하나의 클래스는 하나의 책임만 가져야 한다.- 클래스는 한 가지 기능에 집중해야 하며, 그 외의 기능을 담당하지 않아야 한다. 예시- User 클래스는 사용자 정보 관리, 로그인 및 데이터베이스 저장 책임을 동시에 가지고 있다.public class User { private String name; // 사용자 정보 public void login() { /* 로그인 기능 */ } public void saveUser() { /* 데..

Java - Spring 2025.04.15

spring 기초 (6)

Layered ArchitectureLayered Architecture- 애플리케이션을 세 가지 주요 계층으로 나누어 구조화하는 방법으로 각 계층은 특정한 책임을 갖고 있으며, 계층 간에는 명확한 역할 분담이 이루어져 코드의 재사용성, 유지보수성, 확장성을 높이는 데 도움을 준다. MVC 패턴- 기존의 MVC패턴에서 Controller는 역할이 무수히 많다.1. 요청에 대한 처리2. 예외처리3. View Template 응답 or Data 응답4. 비지니스 로직 처리5. DB 상호작용 - 문제점- Controller에서 요청에 대한 모든 처리를 수행한다. 즉, 책임이 너무 많다.- 기능 추가, 수정, 삭제 등의 유지보수가 힘들어진다.- 코드의 재사용성이 떨어진다. 메서드로 분리하여도 메서드를 호출하는 ..

Java - Spring 2025.04.10

spring 기초 (5)

HTTP 요청데이터Client에서 Server로 Data를 전달하는 법- Client에서 Server로 Data를 전달하는 방법은 Query Parameter, HTTP Form Data, HTTP Request Body 크게 세가지가 있다. 1. GET + Query Parameter(=Query String)- URL의 쿼리 파라미터를 사용하여 데이터 전달하는 방법http://localhost:8080/request-params?key1=value1&key2=value2 - HttpServletRequest 사용@Slf4j@Controllerpublic class RequestParamController { @GetMapping("/request-params") public void par..

Java - Spring 2025.04.09

spring 기초 (4)

Spring Annotation@Slf4j- Slf4j는 인터페이스이고 그 구현체로 Logback같은 라이브러리를 선택함.-실제 개발에서는 Spring Boot가 기본으로 제공하는 Logback을 대부분 사용. Logging - Thread 정보, 클래스 이름과 같은 부가 정보를 함께 확인할 수 있다.- 실제 운영 환경에서는 System.out.println();을 사용하여 Console에 정보를 출력하지 않고, 별도의 로깅 라이브러리를 사용하여 로그를 출력한다.- Log Level 설정을 통하여 Error 메세지만 출력하도록 하도록 하기도 하고 로그 메세지를 일자별로 모아서 저장하여 외부 저장소에 보관하기도 한다.- Log Level → TRACE > DEBUG > INFO > WARN > ERROR ..

Java - Spring 2025.04.09