공부/Spring

서버사이드 렌더링, 클라이언트 사이드 렌더링  SSR - 서버 사이드 렌더링- HTML 최종 결과를 서버에서 마늘어서 웹브라우저에 전달- 주로 정적인 화면에 사용- 관련 기술 : JSP, 타임 리프 -> 백엔드 개발자 CSR - 클라이언트 사이드 렌더링- HTML 결과를 자바스크립트를 사용해 웹 브라우저에서 동적으로 생성해서 적용- 주로 동적인 화면에서 사용, 웹 환경을 마친 앱 처럼 부분부분 변경할 수 있음- 예) 구글지도, Gmail, 구글캘린더- 관련 기술 : React, Vue.js -> 웹 프론트엔드 개발자 참고- React, Vue.js를 CSR + SSR 동시에 지원하는 웹 프레임워크도 있음- SSR을 사용하더라도, 자바스크립트를 사용해서 화면 일부를 동적으로 변경 가능
웹 서버(WEB), 웹 어플리케이션 서버(WAS) 웹 서버(Web Server)- HTTP 기반으로 동장- 정적 리소스 제공, 기타 부가기능- 정적(파일) HTML, CSS, JS, 이미지, 영상- 예) NGINX, APACHE$   웹 어플리케이션 서버(WAS : Web Application Server)- HTTP 기반으로 동작- 웹 서버 기능 포함 + (정적 리소스 제공 가능)- 프로그램 코드를 실행해서 애플리케이션 로직 수행     - 동적 HTML, HTTP API(JSON)     - 서블릿, JSP, 스프링 MVC- 예) 톰캣(Tomcat), Jetty, Undertow  웹 서버 vs. 웹 애플리케이션 서버(WAS)- 웹 서버는 정적 리소스(파일) / WAS는 애플리케이션 로직- 둘의 용어..
https://songkg7.tistory.com/81 @JsonNaming 사용 (springboot 2.5.3 ~)영화 정보를 가져오는 OMDb API 를 사용해보던 중에 DTO로 정보를 처리하고 있었다. 이 과정에서 약간의 문제가 있었는데, 평소 나는 camelCase 방식을 사용하여 프로젝트를 작성하지만 api에서는 앞글songkg7.tistory.com위의 게시글을 그대로 가져왔습니다..    영화 정보를 가져오는 OMDb API 를 사용해보던 중에 DTO로 정보를 처리하고 있었다.이 과정에서 약간의 문제가 있었는데, 평소 나는 camelCase 방식을 사용하여 프로젝트를 작성하지만 api에서는 앞글자를 대문자로 JSON 데이터를 제공하고 있다.{ "Title": "Frozen", "Year..
@NotFound(action = NotFoundAction.IGNORE) 와 @NotFound(action = NotFoundAction.EXCEPTION) 이렇게 두가지가 있다. 먼저 IGNORE 옵션은 아래 설명에도 나와 있듯이 존재하지 않더라도 무시하는 것이고 EXCEPTION 옵션은 EntityNotFoundException을 발생시킨다. EXCEPTION 옵션을 설정하지 않았더라도 해당 옵션이 디폴트 값이기 때문에 따로 설정하지 않으면 Exception이 발생하는 것이다.  그러니 해당 예외를 발생시키지 않고 싶다면 IGNORE 옵션 설정을 해주자. 디버깅을 해보면 해당 엔티티에 다음과 같이 exception이 발생했다고 알려준다. @NotFound(action = NotFoundAction...
참고 링크https://scoring.tistory.com/entry/JPA-양방향-연관관계와-연관관계의-주인-양방향-매핑-정리⭐ JPA 연관 관계 한방에 정리 (단방향/양방향, 연관 관계의 주인, 일대일, 다대일, 일대다, 다대다)본문 바로가기   JPA에서 가장 중요한 것연관 관계 매핑은 그 때 그 때 찾아보기보다는 비즈니스 로직, 비즈니스 요구사항에 따라 개발자가 더 적절한 관계 설정 방법을 선택해야하는 주제이기 때문에 학습하기 위하여 아래에 정리를 했습니다.  연관 관계 정의 규칙연관 관계를 매핑할 때, 생각해야 할 것은 크게 3가지가 있습니다.방향 : 단방향, 양방향 (객체 참조)연관 관계의 주인 : 양방향일 때, 연관 관계에서 관리 주체다중성 : 다대일(N:1), 일대다(1:N), 일대일(1:..
//게시판의 게시글을 삭제하는 메서드 @Transactionalpublic void removeBoard(Long id)throws Exception{ replyDAO.removeAll(id); //삭제할 게시글의 답글 삭제 boardDAO.deleteBoard(id); //게시글 삭제 }  💡 @Transactional 애너테이션메서드 또는 클래스가 트랜잭션 내에서 실행되어야 함을 나타내는 데 사용된다. 💡 트랙잭션?데이터베이스 작업의 원자성을 보장하며, 작업이 성공하면 커밋되고 실패하면 롤백된다. 이렇게 함으로써 데이터 일관성을 유지할 수 있다.동시 접근하는 여러 프로그램 간 격리를 제공한다     이론적으로 데이터베이스 시스템은 각각의 트랜잭션에 대해 원자성(Atomicity), 일관..
@Slf4j logging 관련 라이브러리는 다양하다. 이러한 라이브러리들을 하나의 통일된 방식으로 사용할 수 있는 방법을 SLF4J는 제공한다. SLF4J는 로깅 Facade이다. 로깅에 대한 추상 레이어를 제공하는 것이고 interface의 모음이다. Log Level ex. info 레벨이 설정되면 info 이상의 레벨인 info, warn, error에 대한 로그가 기록됨 Level이 높을수록 심각한 오류를 의미 trace : debug보다 세분화된 정보 debug : 디버깅하는데 유용한 세분화된 정보 info : 진행상황 같은 일반 정보 warn : 오류는 아니지만 잠재적인 오류 원인이 될 수 있는 경고성 정보 error : 요청을 처리하는 중 문제가 발생한 오류 정보 참고링크 - SLF4J
@JsonInclude(JsonInclude.Include.NON_NULL)은 Jackson 라이브러리에서 사용되는 어노테이션으로, JSON 직렬화 시에 특정 속성의 값이 null인 경우 해당 속성을 생성하지 않도록 지시합니다. 구체적으로 말하면, JsonInclude.Include.NON_NULL은 Jackson이 객체를 JSON으로 변환할 때, 해당 객체의 속성 중 값이 null인 속성들을 제외하고 JSON에 포함하도록 지정합니다. 이렇게 함으로써 생성된 JSON이 불필요한 null 값을 가지지 않게 되며, 일부 상황에서 JSON을 더 간결하게 만들 수 있습니다. 예를 들어, 다음과 같은 Java 클래스가 있다고 가정해봅시다: public class Person { private String name..
웹스코프 ✔ 스프링 스코프 종류
싱글톤 빈과 함께 사용시 Provider로 문제 해결 싱글톤 빈과 프로토타입 빈을 함께 사용할 때, 어떻게 하면 사용할 때 마다 항상 새로운 프로토타입 빈을 생성할 수 있을 까? 방법1. .스프링 컨테이너에 요청 가장 간단한 방법은 싱글톤 빈이 프로토 타입을 사용할 때 마다 스프링 컨테이너에 새로 요청하는 것이다. import static org.assertj.core.api.Assertions.assertThat; public class PrototypeProviderTest { @Test void singletonClientUsePrototype() { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(Clie..
sesam
'공부/Spring' 카테고리의 글 목록