Step by Step

240527 본문

Spring

240527

짤진이 2024. 5. 27. 16:01
반응형

MapRepository => JPARepository

Service

1) 필드 타입, 변수명

2) 반환 타입 고려하여 코드 수정

3) 메소드면, 매개변수 수정(insert() => save(), selectByUserId() => findByUserId())

 

📌 위 고려사항을 바꾸지 않고 Service를 사용하는 방법,,,?

기존 Repository 인터페이스와 JPARepository 인터페이스 사이에 중간 인터페이스를 생성하여, Service 계층에서는 이 중간 인터페이스를 사용하도록 합니다. 이 방법을 통해 구현체가 변경되더라도 Service 계층에서 사용하는 인터페이스는 변하지 않으므로, 변수명, 타입, 메소드명 등을 변경할 필요가 없습니다.

 

Map을 (JPA)DB로 업그레이드 할 때, Scale up을 한다.

MapRepository

JPA 메소드와 이름, 매개변수, 반환타입, 기능을 전부 통일 한다. => 1번은 고려가 안됨.

하지만 인터페이스를 구현하면 1번도 고려 가능,,!

 

Optional 기능은 뭘까?

사용 목적 : NPE를 막기 위해,,

No Such Element Exception => 모순적이다.

사용 방법 :

1) get()을 하기 전에 안에 값이 있나 없나 확인을 해야한다.

2) 따라서, inPresent() 와 get()을 같이 사용해야한다.

3) orElseThrow() -> 2번보다는 예외처리할 때 이것을 사용한다.

GloblaExceptionHandler

프로젝트 모든 컨트롤러의 예외 처리를 전역으로 담당

다른 계층에서 터져도 Throws 등을 통해 컨트롤러로 전달

=> 결국 모든 프로젝트 코드에서 예외처리를 도맡아 한다!

 

Member join할 때는 Member 기본 생성자 없이도 잘 됨

login할때는 왜 필요할까?

Entity를 만드는 방향

1) join : DTO -> Entity(개발자)

2) login : Entity(hybernate) -> DTO

 

* Java Reflection API

클래스 타입을 구체적으로 알려주지 않아도 클래스 멤버(필드,메소드)에 접근할 수 있게 도와주는 자바 API

ex) reflection X : 다형성

 

Relection API 사용 용도

보통은 프레임워크나 라이브러리에서 사용

 

 

Gateway
프로토콜을 사용해서ㅏ 두 시스템이 통신할 수 있게 도와주는 컴퓨터

 

API request-> API 게이트 웨이 -> 어플리케이션(ec2, db)

 

MSA 실습

1. 루트 모듈의 build.gradle을 잡고 프로젝트를 켠다.

2. 서브 모듈의 압축을 풀고 드래그앤 드롭으로 루트 모듈 안으로 move시킨다.

3. multi-module의 setting.gradle

4. multi-module.gradle을 수정한다.

 

jar 차이

jar : 배포(단독 실행), 라이브러리(실행 x)

 

Gradle 명령어

  • Bootjar : {project-name}.jar - 단독실행가능, 어플리케이션 배포용
  • Jar : {projcet-name}-plain.jar - 단독 실행 불가, 라이브러리 배포용
  • Build : 두가지 jar 모두 생성
반응형

'Spring' 카테고리의 다른 글

240520  (0) 2024.05.21
240517  (0) 2024.05.17
240516  (0) 2024.05.17
240513(@JsonNaming, @JsonProperty)  (0) 2024.05.13
Log의 종류 & 리팩토링(?)  (0) 2024.05.09