Spring 45

Spring Boot 3 + Spring Security 6 + Swagger 3 으로 기본 Rest API CRUD 구현하기

개발환경 Spring Boot 3.1.3 Spring Security 6.1.3 Swagger 3 Swagger 프론트 백 간 API를 사용할 때 문서로 작성해야 함 - API 문서 자동화 - 간편한 API 확인 1. Swagger 라이브러리 그새 또 버전이 업그레이드 돼서 이전 버전으로 하면 안됩디다.. https://springdoc.org/ OpenAPI 3 Library for spring-boot Library for OpenAPI 3 with spring boot projects. Is based on swagger-ui, to display the OpenAPI description.Generates automatically the OpenAPI file. springdoc.org maven..

Spring 2023.08.27

[스프링 부트와 AWS로 혼자 구현하는 웹 서비스] 5. 스프링 시큐리티, OAuth2.0, Thymeleaf로 소셜로그인 기능 구현하기

1. 구글 로그인 1) 구글 로그인 설정 https://darrenlog.tistory.com/38 [OAuth 2.0] 개념과 Google OAuth2.0 세팅부터 스프링부트로 구현-1 안녕하세요. 이번 게시글에서는 OAuth 2.0에 대한 간략한 개념과 스프링부트 환경에서 직접 구현해보는 단계까지 다뤄보도록 하겠습니다. OAuth, Open Authorization 정의 OAuth는 인터넷 사용자들이 비밀 darrenlog.tistory.com 2) application-oauth.properties 등록 spring.security.oauth2.client.registration.google.client-id=클라이언트 ID spring.security.oauth2.client.registratio..

Spring 2023.08.21

[스프링 부트와 AWS로 혼자 구현하는 웹 서비스] 4. 타임리프로 화면 구성하기

책은 머스테치로 했지만 나는 타임리프로 1. 템플릿 엔진 1) JSP (JavaServer Pages) 자바 기반의 서버 사이드 템플릿 엔진 자바 코드( ) + HTML 코드 혼합 서버 측에서 페이지 동적 생성 서버에서 자바코드로 문자열을 만든 뒤 HTML로 변환하여 브라우저로 전달 2) Thymeleaf 자바 기반의 서버 사이드 템플릿 엔진 HTML 문서 내에서 Thymeleaf 태그 사용 스프링 프레임워크와 통합이 잘 되어있음 HTML을 유효한 HTML로 유지하면서, 동시에 동적 페이지를 생성할 수 있음 (서버에서 페이지 동적 생성 + 서버가 없어도 브라우저에서 실행 가능) 3) React 클라이언트 템플릿 엔진 자바스크립트 프론트엔드 라이브러리 서버에서 벗어난, 브라우저에서 화면 생성 서버에서는 J..

Spring 2023.08.18

[스프링 부트와 AWS로 혼자 구현하는 웹 서비스] 3. 프로젝트에 Spring Data JPA 적용하기

요구사항 분석 * 게시판 기능 - 게시글 조회, 등록, 수정, 삭제 * 회원 기능 - 구글/네이버 로그인 - 로그인한 사용자 글 작성 권한 - 본인 작성 글에 대한 권한 관리 1. 의존성 등록 * build.gradle // spring data JPA implementation 'org.springframework.boot:spring-boot-starter-data-jpa' // h2 데이터베이스 runtimeOnly 'com.h2database:h2' spring-boot-starter-data-jpa 스프링 부트용 Spring Data Jpa 추상화 라이브러리 스프링 부트 버전에 맞춰 자동으로 JPA 관련 라이브러리들의 버전 관리해줌 h2 인메모리 관계형 데이터베이스 별도의 설치 X, 프로젝트 의..

Spring 2023.08.11

[스프링 부트와 AWS로 혼자 구현하는 웹 서비스] 2. 테스트코드 작성하기

1. TDD와 단위 테스트 TDD (Test-Driven Development) : 테스트 주도 개발 테스트 코드를 먼저 작성 단위 테스트 기능 단위의 테스트 코드 작성 개발 단계 초기에 문제 발견 테스트 프레임워크 : xUnit 개발환경(x)에 따라 Unit 테스트를 도와주는 도구 (JUnit, DBUnit 등) 2. 메인 클래스 package com.example.studyspringbootwebservice; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class StudySpr..

Spring 2023.08.01

[스프링 부트와 AWS로 혼자 구현하는 웹 서비스] 1. 인텔리제이로 스프링 부트 시작하기

책은 스프링부트 2.1.7이고, 나는 스프링부트 3.0.5 버전 다른게 많아서 찾아가면서 하는중... 스프링 3.0 버전으로 이 책 실습하는 경우가 별로 없어서 이게 맞는지 잘 모르겠지만 일단 해봐야겠슴다 Windows 10 IntelliJ IDEA 2023.1.1 Java : 17 Spring Boot : 3.0.5 JUnit5 Gradle - Groovy 1. 프로젝트 생성 2. build.gradle 설정 plugins { id 'java' id 'org.springframework.boot' version '3.0.5' id 'io.spring.dependency-management' version '1.1.0' } group = 'com.example' version = '0.0.1-SNAPSH..

Spring 2023.07.31

[인프런/스프링DB 2편] 6. 스프링 트랜잭션 전파 (2)

1. 스프링 트랜잭션 전파 활용 비즈니스 요구사항 - 회원을 등록하고 조회한다. - 회원에 대한 변경 이력을 추적할 수 있도록 데이터 변경(등록) 이력을 DB LOG 테이블에 남긴다. 1-1. 객체 세팅 * Member package hello.springtx.propagation; import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; import jakarta.persistence.Id; import lombok.Getter; import lombok.Setter; @Entity @Getter @Setter public class Member { @Id @GeneratedValue private Long id; pri..

Spring 2023.07.28

[인프런/스프링DB 2편] 6. 스프링 트랜잭션 전파 (1)

1. 트랜잭션 기본 * 트랜잭션 관련 로그 logging.level.org.springframework.transaction.interceptor=TRACE logging.level.org.springframework.jdbc.datasource.DataSourceTransactionManager=DEBUG #JPA log logging.level.org.springframework.orm.jpa.JpaTransactionManager=DEBUG logging.level.org.hibernate.resource.transaction=DEBUG #JPA SQL logging.level.org.hibernate.SQL=DEBUG 1) 기본 커밋, 롤백 package hello.springtx.propagat..

Spring 2023.07.25

[인프런/스프링 DB 2편] 5. 스프링 트랜잭션

📌 @Transactional 사용 -> 트랜잭션 프록시 적용 -> 트랜잭션 AOP 처리 1. 트랜잭션 적용 확인 1) build.gradle plugins { id 'java' id 'org.springframework.boot' version '3.1.1' id 'io.spring.dependency-management' version '1.1.0' } group = 'hello' version = '0.0.1-SNAPSHOT' java { sourceCompatibility = '17' } configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { impl..

Spring 2023.07.20

[인프런/스프링 DB 2편] 4. 데이터 접근 기술 (6) SpringData JPA + Query DSL

1. 트레이드 오프 * 스프링 데이터 JPA를 사용할 때의 두가지 방법 1) 구조의 안정성 (DI, OCP를 지킴 -> 어댑터 도입) * Service Repository 인터페이스 구현체의 메소드 호출 * Repository 인터페이스 구현체 SpringDataJpa 의 메소드 호출 Service -> Repository 어댑터를 거쳐서 -> 스프링 데이터 JPA 의 메소드 사용 장점 : Service에서 의존하는 Repository 인터페이스를 유지, Service의 코드도 유지하면서 Repository의 구현체를 변경할 수 있음 (DI, OCP원칙) 단점 : 중간 어댑터 작성, 실제 코드까지 함께 유지보수해야 함 2) 구조의 단순성 + 개발의 편리성 (service에서 직접 호출) Service에서..

Spring 2023.07.18