Spring Boot

Haechan Kim·2022년 9월 4일
0

Spring

목록 보기
14/69

추석 전까지 김영한 jpa 기본, 다른 스프링, 스프링 부트 강의 듣고 추석때 할인하면 그 때 인프런 강의 사기.

====
https://youtube.com/watch?v=YSsl5-q2BR4&list=PLlTylS8uB2fBOi6uzvMpojFrNe7sRmlzU&index=25

  • 스프링 / 스프링 부트

스프링 프레임 워크

  • 의존성 주입 (DI)

  • 관점 지향 프로그래밍 (AOP)

  • 하이버네이트: 자바 orm 프레임워크. jpa 구현체

  • 마이바티스:

  • 스프링 부트
    spring boot makes it easy to create stand-alone, production-grade Spring based App that you can just run
    ㄴ 공식 사이트 설명
    간단하게 개발 가능.

스프링은 기능 많지만, 사용 설정 시간 오래 걸림
스프링 부트는 자동 설정(autoconfig) 기능.
springboot-starter: 자동 호환 버전 관리. 신경쓸 필요 없음
모니터링 기능

====
<1>
백엔드 기준이기 때문에 타임리프는 잘 사용x
웹사이트는 거의 사용x, 백단에서 돌아가는 api 어떻게 만들것인지에 대해 다룰것.
인프런 강의에서는 gradle 사용하는데 여기서는 maven
요즘은 gradle 점점 쓰이지만 실무에서는 아직 maven 많이 쓰인다고 함.
pom.xml -> maven

<2>
빌드 관리 툴
ㄴ 자바 대표적: ant, maven, gradle
프로젝트 외부 라이브러리 쉽게 참조할 수 있게 pom.xml

maven 사용 이유
자동으로 라이브러리 관리, 업데이트
pom.xml 파일 활용해 빌드 및 관리

안드로이드는 gradle

넘김

<3>
디자인 패턴
GoF 디자인 패턴
목적에 따른 분류
생성, 구조, 행동 3가지로 분류

넘김

<4>
REST API
API란?
REST란? 자원 이름으로 구분해 자원의 상태를 교환
서버와 클라의 통신 방식

REST 특징
...
REST API
확장성, 재사용성
URI에는 행위 X

<5>
pom.xml 파일 다루기
maven 프로젝트 생성 시 생성
관련 태그
라이브러리 설명

  • spring boot starter web : spring mvc 사용한 rest 서비스 개발에 사영
  • spring boot starter test: 스프링 앱 테스트

<6>
mvc 패턴
model, view, controller

model - db와 연동 위한 dao와 do로 구성

<7>
hello world

controller 사용자로부터 입력에 대한 응답으로 머델, 뷰를 업데이트 하는 로직 포함

  • @RestController
    spring framework 4 부터 사용 가능한 어노테이션
    @Controller에 @ResponseBody 결합된 어노테이션
    컨트롤러 하위 메서드에 @ResponseBody 어노테이션 안붙여도 문자열과 json 전송 가능.
    view 거치지 않고 http ResponseBody에 직접 리턴 값 담아 보냄.

==> 김영한 강의에서는 타임리프 사용했기 때문에 html 폼을 리턴했음. 그냥 @Controller
리턴값에 자동으로 html 붙음.
@RestController 사용하면 그냥 문자열 리턴.

  • @RequestMaping
    @GetMapping ..

<8>
get api
서버에 있는 리소스 가져오기 위해 사용
요즘은 RequestMapping안쓰고 다 @GetMapping 씀
@PathVariable - :3000/review/1
@RequestParam - :3000/review?name=kim&age=20

DTO 사용

<9>
마리아 db
비밀번호 bluesun
포트번호 mysql이랑 겹쳐서(3306) 3307로 바꿈.
mysql은 gui 워크밴치. 마리아 db는 heidiSQL.

<10>
post api
리소스 추가(전달) 위해 사용
dto 사용도 가능 @RequestBody MemberDto memberDto

<11>
swagger
협업 위한 라이브러리
api 리스트 문서화, 테스트
어노테이션들 몇가지
pom.xml에 디펜던시 추가해야 함.

<12>
PUT, DELETE API
ResponseEntity - Httpstatus.ACCEPTED(202)

<13>
lombok
반복 도와주는 annotation
Getter, Setter ..
생성자 생성 어노테이션
@NoArgsConstructor : 파라미터 없는 생성자
@AllArgsConstructor : 모든 필드값 파라미터로 갖는 생성자

@EqualsAndHashCode
equals, hashCode 메소드 자동 생성
equals: 두 객체 내용 같은지 동등성(equality) 비교 연산자
hashCode: 두 객체가 같은 내용인지 동일성(identity) 비교 연산자

@Data
Getter, Setter, RequiredArgsController, ToString 다 포함.
그냥 하나씩 꺼내서 쓰자

<14>
db 관련 내용

  • Entity (Domain)
    db 테이블을 하나의 엔티티라 생각해도 무방
    실제 db 테이블과 1:1 매핑
    이 클래스의 필드는 각 테이블 내부 컬럼을 의미

  • Repository
    엔티티에 의해 생성된 db에 접근하는 메소드를 사용하기 위한 인터페이스
    서비스와 db 연결하는 역할
    db에 적용하고자 하는 crud 정의하는 영역

  • DAO (Data Access Object)
    db에 접근하는 객체
    리포지토리 활용해 코드 작성

  • DTO (Data Tranfer Object) == VO (Value Object)
    계층간 데이터 교환 위한 객체 (클라에서 컨트롤러, 컨트롤러에서 서비스)
    엔티티랑 다른점은 db의 컬럼과는 좀 독립적.

<15>
orm과 jpa

  • orm
    앱 객체와 관계형 db의 데이터 자동으로 매핑
    대표적으로 jpa, 하이버네이트 등.

  • 장점
    sql 쿼리 아닌 직관적 코드

  • jpa
    orm 관련 인터페이스 모음
    java 표준 orm

orm이 큰 개념이면 jpa는 구체화시킨 스펙

  • Hibernate
    orm 프레임워크 중 하나
    jpa의 실제 구현체. 현재 jpa 구현체 중 가장 많이 사용됨.

  • Spring Data JPA
    스프링 프레임워크에서 jpa 쉽게 사용 위해 지원하는 라이브러리
    하이버네이트에서 자주 사용된는 기능 쉽게 사용가능하도록.

loose coupling (느슨한 결합도)
서비스에서 인터페이스와 구현 클래스 나눈 구조.
각 객체간 의존성 줄여줌.
ProductService, ProductServiceImpl
바로 클래스에서 구현해 작성하면 db 바군다거나 등등 할때마다 바꿔야 함.
인터페이스로 가져다 쓰자

데이터의 변환 - 데이터와 엔티티는 어느 계층에서 작업해야 하는가?
이론적: 서비스에서. but 간단하다면 컨트롤러에서?

<16>
Logback
Log4J 기반 로깅 라이브러리
로그에 특정 레벨 설정 가능
(trace -> debug -> info -> warn -> error)
slf4j
{}
[INFO ][http-nio-8080-exec-7] s.t.t.c.ProductController [getProduct] Response :: productId = idid, productName = name1, productPrice = 10000, productStock = 10, Response Time = 14ms

<17>
유효성 검사 (validation)
데이터 검증
@Valid

<18>
예외 처리 (exception)
@ControllerAdvice : 모든 컨트롤러에서 발생할 수 있는 예외 처리
@ExceptionHandler : 특정 컨트롤러 예외 처리
ㄴ 예외 처리 사항 발생 시 해당 핸들러로 처리하겠다고 명시하는 어노테이션
@ExceptionHandler(처리할 클래스)

<20>
RestTemplate
http 통신 기능 쉽게 사용할 수 있도록 설계된 템플릿
http 서버와 통신 단순화

다시보기..

0개의 댓글