본문 바로가기
반응형

개발공부/JAVA Spring37

[커리어리 글 공유] 주니어 자바 개발자를 위한 100가지 질문 (1) 질문에 답하기~ 조서희 / 주니어 자바 개발자를 위한 100가지 질문 1 | 커리어리 "주니어 자바 개발자를 위한 100가지 질문" 1편입니다. 주니어 자바 개발자를 위한 100가지 질문 (2)... careerly.co.kr 1️⃣ 기초 📌 JDK와 JRE의 차이점은 무엇입니까? JRE 자바 프로그램을 실행시키는데 필요한 런타임 환경 JDK 자바 프로그램을 개발하는데 필요한 것 ex) 컴파일러, 디버거, 개발도구 JVM 클래스라이브러리, 실행환경 등을 포함 📌 ==와 equals의 차이점은 무엇입니까? ==은 객체의 주소값을 비교한다. equals도 객체의 주소값을 비교하는데, 문자열 타입을 비교할 수 있다. 📌 두 객체가 동일한 hashCode를 가지면 Equals()가 참이어야 합니다, 그렇죠? h.. 2023. 12. 4.
Spring MVC vs WebFlux 패턴 비교하기 MVC 패턴 동기적으로 동작하는 블로킹 방식 어플리케이션이 JPA, JDBC 또는 네트워킹 API에 의존하는 경우 spring MVC가 최선이다. 사용자 요청마다 스레드를 계속 생성해야하므로 Thread pool이 만들어진다. 장점 모듈의 분리를 가능하게 하여 코드 가독성이 높아지고 협업에 유리하다. 가장 많이 쓰이는 패턴이며 유지보수가 쉽다. 단점 view-model간 의존성 대량 요청을 받아내는데 (Thread pool hell현상: 큐에 계속 요청이 쌓여있는 것) 한계가 있다. 시스템의 트래픽을 측정해서 Thread pool size를 잘 조정해야한다. 요즘은 webflux 방식을 사용한다고 한다. WebFlux 비동기적으로 동작하는 논블로킹 방식 spring 5 (spring boot 2)에서 새.. 2023. 8. 13.
[SpringBoot] Spring Batch 5 Spring Batch 대용량 일괄처리를 위해 설계된 배치 프레임워크 ex) 일관되고 반복적인 작업, 트랜잭션 관리, logging/trace 모니터링 등 대용량 레코드 처리 Job이라는 단위로 배치 작업을 분류한다. 한 개의 Job은 한 개 이상의 Step을 가진다. Step 안에는 Tasklet 또는 {Reader, Processor, Writer } 묶음이 존재한다. Batch 프로세스 단계 1) Batch Scheduler spring batch 자체는 configuration bean을 통해 Job이 실행될 경우 어떤 일을 처리할지 세팅시켜주기만 할 뿐이므로, Scheduler가 필요하다. 단계 2) JobRepository 배치를 수행하는데 필요한 object를 포함하고 있다. (Job, Jo.. 2023. 7. 20.
[Spring Boot] JWT 튜토리얼 [chap.1~3] - 인프런 강의 인프런 강의를 보고 실습하고 정리하기! (무료입니다~) 회원가입, 로그인, 권한 로직을 실제로 구현해보고 Spring Security의 인증과 인가 로직을 경험해본다. 인증 : Request를 보낸 User가 누구인지? 올바른 User인지 확인하는 과정 인가 : Request가 수행하고자 하는 행동이 허가된 행동인지를 확인하는 과정 [무료] Spring Boot JWT Tutorial - 인프런 | 강의 Spring Boot, Spring Security, JWT를 이용한 튜토리얼을 통해 인증과 인가에 대한 기초 지식을 쉽고 빠르게 학습할 수 있습니다., - 강의 소개 | 인프런 www.inflearn.com JWT : json 객체를 사용해서 토큰 저장하는 웹토큰 가볍게 적용할 수 있어서 사이드 프로젝.. 2023. 7. 1.
[SpringBoot 통신] RestTemplate, WebClient 서버로 웹 요청을 보내고 응답을 받을 수 있게 도와주는 RestTemplate 과 WebClient RestTemplate 스프링에서 HTTP 통신 기능을 손쉽게 사용하도록 설계된 템플릿 RESTful 원칙을 따르는 서비스를 편리하게 만들 수 있다. 동기 방식으로 처리되며, AsyncRestTemplate를 사용하면 비동기 방식으로 사용할 수 있다. 현업에서 많이 쓰이지만 지원이 중단된 상태여서 최신 버전에서는 WebClient 사용을 권고한다. WebClient Reactor 기반으로 동작하는 API 스레드와 동시성 문제를 벗어나 비동기 형식으로 사용할 수 있다. 특징 Non-Blocking I/O 를 지원한다 Reactive Streams의 Back Pressure를 지원한다 적은 하드웨어 리소스로 .. 2023. 5. 9.
객체지향 패러다임 적절한 객체에게 적절한 책임을 할당하여 서로 메시지를 주고 받으며 협력하도록 하는 것 점점 증가하는 sw 복잡도를 낮추기 위해 객체지향 패러다임 대두 높은 응집도, 낮은 결합도 -> 유지보수가 용이하다. 영향도를 파악할 수 있어야 한다. 중요한 포인트! 1. 클래스가 아닌 객체에 초점을 맞추는 것 2. 객체들에게 얼마나 적절한 역할과 책임을 할당하는지 절차지향 프로그래밍 vs 객체지향 프로그래밍 절차 지향 - 책임이 한곳에 집중해 있는 방식 (getter) 객체지향 - 책임이 여러 객체로 적절히 분산돼 있는 방식 객체지향 설계 시 고려할 것 1. 도메인을 구성하는 객체에는 어떤 것들이 있는지 고민 2. 객체들간의 관계를 고민 3. 동적인 객체를 정적인 타입으로 추상화해서 도메인 모델링 하기 4. 협력을 .. 2023. 4. 12.
[Spring Boot] 예외처리 Exeption 클래스 구분 Chekcked Exception Unchecked Exception 처리 여부 반드시 예외처리 필요 명시적 처리를 강제하지 않음 확인 시점 컴파일 단계 실행 중 단계 대표적인 예외 클래스 IOExceiption SQLException RuntimeException NullPointerException IllegalArgumentException IndexOutOfBoundException SystemException uncheked exception 은 문법상 문제는 없지만 예기치 않은 상황이 생겨 발생하는 예외이다. 예외처리 방법 1. 예외 복구 - try catch 2. 예외 처리 회피 - throw 예외가 발생한 메서드를 호출한 곳에서 에러 처리를 할 수 있게 전가하는.. 2023. 3. 28.
[Spring Boot] JPA 영속성 전이 cascade, 고아객체 영속성 전이 cascade : 특정 엔티티의 영속성 상태를 변경할 때 그 엔티티와 연관된 엔티티의 영속성에도 영향을 미쳐 영속성 상태를 변경하는 것 영속성 전이 타입의 종류 ALL : 모든 영속 상태 변경에 대해 영속성 전이 적용 PERSIST : 엔티티가 영속화할 때 연관된 엔티티도 함께 영속화 MERGE : 엔티티를 영속성 컨텍스트에 병합할 때 연관된 엔티티도 병합 REMOVE : 엔티티를 제거할 때 연관된 엔티티도 제거 REFRESH : 엔티티를 새로고침할 때 연관된 엔티티도 새로고침 DETACH : 엔티티를 영속성 컨텍스트에서 제외하면 연관된 엔티티도 제외 엔티티 생명주기와 연관이 있다. 한 엔티티가 영속 상태의 변경이 일어나면 매핑으로 연관된 엔티티에도 동일한 동작이 일어나도록 전이를 발생시킨다.. 2023. 3. 27.
[Spring Boot] JPA Auditing 엔티티 클래스에 들어가는 공통적인 필드가 있다. ex) 생성자, 생성시각, 변경자, 변경시각 매번 값을 주입해야하는 번거로움을 해소하기 위해 Spring Data JPA에서 이값을 자동으로 넣어주는 기능을 제공한다. 컨피그 클래스 생성 @Configuration @EnableJpaAuditing public class JpaAuritingConfiguration { } BaseEntity 생성 @MappedSuperclass : 자식 클래스에게 매핑 정보를 전달 @EntityListeners(AuditingEntityListener.class) : 엔티티를 데이터베이스에 적용하기 전후로 콜백 요청 @CreatedDate : 데이터 생성 날짜 자동 주입 @LastModifiedDate : 데이터 변경 날짜.. 2023. 3. 11.
728x90
반응형