본문 바로가기

Spring

(9)
[Object] 책임 주도 설계 내용 정리 본 포스팅은 책 오브젝트의 "5장 책임 할당하기"를 읽고 정리한 내용입니다. 데이터 중심의 설계에서 책임 중심의 설계로 전환하기 위해서는 두 가지 원칙을 따라야 한다. 1. 데이터보다는 행동을 먼저 결정하라 2. 협력이라는 문맥 안에서 책임을 결정하라 핵심은 설계를 진행하는 동안 데이터가 아니라 객체의 책임과 협력에 초점을 맞추라는 것이다. 데이터보다 행동을 먼저 결정하라 객체에게 중요한 것은 데이터가 아니라 외부에 제공하는 행동이다. 데이터 중심의 설계에선 "이 객체가 포함해야 하는 데이터가 무엇인가"를 먼저 결정한 후에 "데이터를 처리하는 데 필요한 오퍼레이션은 무엇인가"를 결정한다. 반면, 책임 중심의 설계에서는 "이 객체가 수행해야 하는 책임은 무엇인가"를 결정한 후에 "이 책임을 수행하는 데 필..
[Trouble Shooting] Incompatible because this component declares a component for use during compile-time, compatible with Java 17 and the consumer needed a component for use during runtime, compatible with Java 11 오류 해결 "이 구성 요소는 컴파일 시간 동안 사용할 구성 요소를 선언하고 Java 17과 호환되며 소비자는 실행 시간 동안 사용할 구성 요소가 필요하므로 호환되지 않음, 현재는 Java 11과 호환됨" Spring Boot 3.0 부터는 Java 17부터 지원된다. Gradle의 JVM 에서 build되는 자바의 버전을 17 이상으로 수정해주면 된다. 그리고 project의 SDK 설정을 바꿔준다. 이 이후에 refresh 해주면 정상적으로 build 된다
스프링 입문을 위한 자바 객체 지향의 원리와 이해 책 요약 001. 사람을 사랑한 기술 기계어에서 객체 지향 프로그래밍 언어로 기계어 코드는 CPU에 따라 다름 기계어 명령을 일상 용어로 표현하고 이걸 기계가 알 수 있는 기계어로 번역하게 하는 것 -> 즉 매칭 코드표(번역 소프트웨어) : 어셈블리 CPU별로 기계어 다르므로 어셈블리어도 다름 C 언어의 등장 싱글 소스 : 소스파일을 단 하나 만들고 각 기계에 맞는 컴파일러로 컴파일만 하면 각 기계에 맞는 목적 파일(기계어)이 만들어짐 번역 프로그램이 어셈블러가 아니라 컴파일러임 자바 - 진정한 객체 지향 언어 객체 지향 언어의 중심에는 클래스(class)가 있음. 자바에서는 클래스를 떠나 존재할 수 잇는 것은 아무것도 없음. 자바 vs. C 컴파일러를 기종별로 준비해두지 않아도 됨 자바로 구현한 소스는 다른 기..
[JPA] 영속성 컨텍스트와 변경 감지(dirty checking) vs. 병합(merge) EntityManager EntityManagerFactory는 여러 스레드에서 동시에 접근해도 안전하지만, 생성 비용이 크다. 따라서 EntityManagerFactory에서는 "요청이 올 때마다" 생성 비용이 거의 없는 EntityManager를 생성한다. EntityManager는 Thread Safe하지 않아, 여러 스레드가 동시에 접근하면 동시성 문제가 발생한다. 따라서 요청(스레드)별로 한 개 씩 할당해준다. 이때 만들어진 EntityManager는 내부적으로 DatabaseConnection을 사용해서 DB를 사용한다. 영속성 컨텍스트 - 엔티티를 영구 저장하는 환경 - 영속성 컨텍스트는 애플리케이션과 데이터베이스 사이에서 객체를 보관하는 논리적 개념 - EntityManager를 통해서 영..
[JPA] JPA 정리 의문점 어떤 엔티티는 왜 @JoinColumn 어노테이션을 추가해주나? 그리고 어떤 엔테티는 왜 @OneToMany와 같은 어노테이션 뒤에 mappedBy라는 속성을 추가해주는가? 연관관계의 주인이라는 개념 때문에 그러한가? [JPA] @JoinColumn 확실히 알고가기!!! 안녕하세요 오늘은 JPA 주제로 글을 써보도록 하겠습니다. 테이블들간 연관관계를 설정해 줄때 일대다(1:N) 관계일때 @JoinColumn 어노테이션을 사용해서 해당 컬럼의 이름을 설정해줍니다.... 근데!! boomrabbit.tistory.com https://ch4njun.tistory.com/274 [Spring Boot] JPA 에서의 연관관계 JPA 에서 가장 중요한 개념이라고 하면 연관관계 매핑과 영속성 컨텍스트가 있..
[Concept] @Controller vs. @RestController, JSON, Serialize, URL, URI, REST API URI vs. URL URI 인터넷에 있는 자원을 나타내는 유일한 식별자 URL 주소이다. 흔히 웹 주소라고도 하며, 컴퓨터 네트워크 상에서 리소스가 어디 있는지 알려주기 위한 규약이다. URI의 부분집합이다. http://www.a.com/users/143 // 전체가 URI // URL은 /users 까지 REST API 웹 서비스에서 클라이언트에 데이터와 기능의 집합을 전송하기 위해 제공되는 Web API가 REST 구조 스타일에 적합하게 설계된 경우 REST API라고 한다. REST 구조 스타일은 웹 서비스 API 설계에 많이 적용되고 있다. REST 로이 필팅이 웹 확장성의 주요 제약 조건들을 정리한 "웹의 구조적 스타일"에 대해 자신의 박사학위 논문에서 "REST (Representation..
[Spring Boot for Web Development] 강의 내용 정리 Spring Boot 애플리케이션 개발 및 실행 순서 Spring initializr 를 활용한 Spring Boot 프로젝트 생성 및 다운로드 다운로드 한 Spring Boot 프로젝트를 IntelliJ에서 Import 추가 코드 개발 Spring Boot 애플리케이션 실행 웹 브라우저 또는 Postman을 활용하여 테스트 Spring Initializr Spring Boot 프로젝트를 쉽게 구성할 수 있게 지원하는 사이트 https://start.spring.io/ IP& PORT IP 서버의 주소 request를 요청하는 주소 인터넷에 연결된 기기가 가질 수 있는 네트워크 상의 주소 IP 주소 정보로 원격에 있는 자원 (웹 페이지, 이미지 등)을 요청 가능 IPv4 vs. IPv6 더 많은 기기에 ..
[Trouble Shooting] no ServletWebServerFactory bean defined in the context ... DispatcherServlet과 Tomcat Web Server 객체를 빈으로 생성하고 해당 자동 구성 정보를 따로 파일로 관리하고자 Resource 디렉토리에 텍스트 파일을 만들었는데 아래와 같은 에러가 떴다. 실제 파일 탐색기에서도 META-INF 디렉토리 하위에 spring 디렉토리가 있는 것이 아니라 따라서 디렉토리를 생성할 때, 바로 META-INF.spring을 입력하는 게 아니라 META-INF 디렉토리를 만들고 그 하단에 spring 디렉토리를 만들었다. 그랬더니 파일탐색기에서도 META-INF 하위에 spring 폴더가 만들어졌다. 문제 해결에 도움을 준 글은 아래와 같다 (감사합니다) https://www.inflearn.com/questions/798806/%EC%9E%90%EB%8..