- Spring 은 SOLID 원칙을 잘 지키도록 도와준다.starryeye이번 포스팅 주제는 개인적으로 생각하는 Spring 의 철학입니다. 들어가기 앞서 SOLID 원칙에 대해 살짝 알아보고 가봅시다. SRP (Single Responsibility Principle)단일 책임 원칙입니다. 하나의 클래스는 하나의 책임만 가져야 한다. 다른 말로는 클래스가 변경되는 이유는 한가지여야 한다 입니다. OCP (Open / Close Principle)개방 폐쇄 원칙입니다. 풀어서 보면, 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다. 입니다. 좀더 쉽게 보자면, 확장에는 열려있다. -> 애플리케이션의 요구 사항이 변경될 때, 이 변경에 맞게 새로운 동작을 추가해 모듈을 확장할 수 있다. 수정에 닫혀있다. -> 기존의 소스 코드를 수정하지 않아도 모듈의 기능을 ..
- 2023-11-14 22:18:03
- @Configuration 와 싱글톤starryeye@Configuration 은 스프링 컨테이너에 스프링 빈을 등록할 수 있도록 해주는 어노테이션이다. @Configuration 이 적용된 클래스 내부에 다수의 @Bean 이 적용된 메서드가 있으면 스프링 빈으로 등록해준다. @Bean 이 적용된 메서드가 하는 역할은 반환되는 객체를 해당 메서드의 이름을 가진 스프링 빈으로 등록한다. @Bean 은 스프링 빈으로 등록되는 클래스에 작성하여도 동작한다. (@Component 적용된 클래스 내부에 작성) 본격적으로 이번 포스팅 주제인.. @Configuration 어노테이션의 이해도를 높여보자. @Configuration public class AppConfig { @Bean public MyBean myBean() { return new MyBean(); ..
- 2023-07-13 22:04:18
- JPA 등록, 기본 키 생성 전략starryeye이번엔 JPA 의 등록 과정에 대해 알아보겠다. JPA 의 등록 과정은 크게 2단계를 따른다. 1. 영속성 컨텍스트에 엔티티 등록 -> 엔티티를 영속 상태로 변경 2. 플러시 과정을 거쳐 영속성 컨텍스트에 존재하는 엔티티를 DB 에 반영 -> 쓰기 지연 SQL 저장소의 SQL 을 DB 에 보낸다. 이제 자세하게 알아보겠다.. 먼저 위 사진을 한번 보자.. persist 메서드를 호출하면 해당 엔티티에 대해서.. insert 문이 생성되어 쓰기 지연 SQL 저장소에 저장되고 1차 캐시에 저장되는 두개의 작업이 이루어진다 코드를 통해 이해해보자.. addMember 메서드를 호출하면 어떤일이 발생하는지 알아보겠다. 1. @Transactional 어노테이션이 적용된 메서드이므로 수동 커밋 모드로 진행되며....
- 2023-06-19 13:07:53
- @Async, TaskExecutor, CompletableFuturestarryeyehttps://docs.spring.io/spring-framework/reference/integration/scheduling.html Task Execution and Scheduling :: Spring Framework All Spring cron expressions have to conform to the same format, whether you are using them in @Scheduled annotations, task:scheduled-tasks elements, or someplace else. A well-formed cron expression, such as * * * * * *, consists of six space-separated time docs.spring.i..
- 2023-06-17 18:47:03
- Spring Cloud OpenFeign, Synchronizationstarryeyehttps://spring.io/projects/spring-cloud-openfeign#overview Spring Cloud OpenFeign This project provides OpenFeign integrations for Spring Boot apps through autoconfiguration and binding to the Spring Environment and other Spring programming model idioms. Features Declarative REST Client: Feign creates a dynamic implementation of an inte spring.io 선언적 웹 서비스 클라이언트 도구인 open feign 에 대해 알아보자.. Open F..
- 2023-06-17 04:08:35
- JPA 변경 감지와 플러시starryeyeJPA 의 변경 감지와 플러시에 대해 알아보자. 변경 감지엔티티의 변경사항을 데이터베이스에 자동으로 반영하는 기능을 변경 감지(Dirty Checking) 이라 한다. 플러시영속성 컨텍스트의 변경 내용을 데이터 베이스에 반영(동기화)한다. 위 그림을 한번 봐주고.. 코드를 통해 이해 해보자. 엔티티 Member 를 생성 후, 추가하는 addMember 메서드 findById 를 통해 한번 조회 하고, 닉네임을 변경하고, 다시 조회하는 test 메서드 실행은 다음과 같이 진행 하였다. test 메서드를 수행하면 내부적으로 어떤 일이 발생하는지 알아보겠다. 1. test 메서드는 하나의 트랜잭션으로 묶여있어서 메서드 내에서는 동일한 영속성 컨텍스트를 이용하게 된다. 2. (29 line) 최초에는 영속성 컨..
- 2023-06-15 22:06:22
- JPA Entity Default ConstructorstarryeyeJPA 의 공식 문서 JSR 338, Java Persistence API 를 보면.. 이런말이 나온다. 2.2 version https://download.oracle.com/otn-pub/jcp/persistence-2_2-mrel-spec/JavaPersistence.pdf?AuthParam=1686147162_93e6225ea2a6979ada32934da41475b1 즉, 엔티티 클래스는 Default 생성자를 반드시 가져야한다. (생성자의 접근지정자는 public or protected) 물론 표준 스팩일 뿐이므로 JPA 의 구현체 마다 다를 수 있다. 오늘은 이 부분에 대해 알아보자.. JPA 의 Entity 생성 방식 DB 에서 데이터를 읽고 Entity 를 반환해주려면.. JPA Entit..
- 2023-06-07 23:57:42
- JPA Merge, Dirty Checkstarryeye이번 포스트에서 다룰 주제는 JPA 의 Merge, Dirty Check 에 대해서이다. merge() 에 대해서 데이터 업데이트 용도로 쓰면 위험하므로 권장하지 않는 방법이다. 왜 이런말이 나왔을까..위 코드는 Spring Data Jpa 의 SimpleJpaRepository 의 Save 메서드 정의 부분이다. Jpa 를 잘 모르고 사용하면.. 데이터 업데이트를 위해서 비/준영속 상태의 엔티티로 save 를 호출해버린다면 merge 를 호출한 상황이 발생하기 때문이다. 참고> isNew() 에 대해서.. 알아보자 JPA 식별자 생성 전략이 @GenerateValue 이면, save() 호출 시점에 식별자가 없으므로 새로운 엔티티로 인식해서 persist() 로 로직이 흘러간다.. 하지만.. JPA 식..
- 2023-06-06 22:52:53
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)