Light Blue Pointer
본문 바로가기

Developing/TIL(Develop)76

Spring mvc 패턴 Spring MVC 패턴이란디자인 패턴의 일종으로 Spring MVC (Model-View-Controller) 패턴은 자바 기반의 웹 애플리케이션 프레임워크인 스프링 프레임워크에서 제공하는 웹 애플리케이션 개발을 위한 패턴이다.이 패턴은 애플리케이션의 각 부분을 분리하여 개발하고 유지보수를 용이하게 한다.Spring MVC는 크게 Model, View, Controller의 세가지 구성요소로 나뉜다Model모델은 애플리케이션의 데이터 및 비즈니스 로직을 포함합니다. 데이터베이스와 상호작용하고, 데이터를 처리하며, 그 결과를 반환한다Model의 구성요소도메인 객체: 애플리케이션에서 사용하는 데이터의 구조를 정의한다서비스: 비즈니스 로직을 구현한다DAO (Data Access Object): 데이터베이스와.. 2024. 5. 14.
Spring JPA 상속 관계 일반적으로 RDBMS에서는 상속 관계를 지원하지 않지만JPA(Java Persistence API) 는 상속 관계를 지원해서 객체지향 모델링을 데이터베이스에 매핑해준다일반적으로 JPA에서는 상속 관계를 세 가지 전략으로 매핑한다단일 테이블 전략 (Single Table Strategy)통합 테이블로 변환모든 엔티티 클래스의 필드를 하나의 테이블에 매핑한다부모 클래스와 자식 클래스의 모든 필드가 테이블의 열로 매핑되며, 부모 클래스와 자식 클래스를 구분하는 열(Discriminator Column)이 추가된다장점간단하고 효율적이다조인이 필요하지 않아서 대체로 조회 성능이 좋다조인이 필요하지 않아서 조회 쿼리가 단순하다INSERT시 쿼리가 한 번만 호출된다단점모든 필드가 하나의 테이블에 있기 때문에 엔티티.. 2024. 5. 10.
Spring Transactional Transaction데이터베이스에서 수행되는 작업 단위데이터베이스 시스템이 보장해야 하는 성질원자성 (Atomicity)원자성은 트랜잭션이 완전히 성공하거나 완전히 실패하는 단일 단위로 처리되도록 보장한다.즉, 트랜잭션 내에서 수행되는 모든 작업은 모두 성공하거나 모두 실패해야 한다.어떤 작업이 실패하면 이전의 변경 사항은 롤백되어야 한다. 🍿 예시로 설명해보자~Alice가 Bob에게 100달러를 송금하려는 트랜잭션을 생각해보자.이 트랜잭션 내에서는 Alice의 계좌에서 100달러를 빼는 작업과 Bob의 계좌에 100달러를 추가하는 작업이 함께 수행된다.Alice의 계좌에서 돈을 빼는 작업이 성공하고 Bob의 계좌에 돈을 추가하는 작업이 실패할 경우, Alice의 계좌에서 빼었던 돈이 롤백되어야 한다... 2024. 5. 9.
Spring AOP Aspect Oriented ProgrammingAspectAspect: 여러 클래스나 모듈에 영향을 미치는 기능의 모듈화된 단위로깅, 보안, 트랜잭션 관리와 같이 프로그램의 비즈니스 로직과 분리할 수 있는 부분을 묶은 것주요 비즈니스 로직 안에 저런 코드들을 분산해서 모두 넣지 않고 한 곳에서 관리할 수 있게 한다.In Spring AOPaspect를 일반 클래스로 구현하는 방식(the schema-based approach)와 @Aspect 어노테이션으로 주석이 달린 일반 클래스(@AspectJ style)로 구현하는 방식 두가지가 있다.Join point어떤 method의 실행 / Exception을 handling할 때 와 같이 프로그램 실행 중에 만나는 어떤 포인트이다.In Spring AOP .. 2024. 5. 8.
Spring IoC Container, Bean Spring BeanBean 은 Spring IoC container 에 의해 관리(생성,조립,관리)되는 객체이다.Spring Framework의 중추이다.스프링 IoC 컨테이너는 제어의 역전을 실현하기 위한 핵심 요소이다. 이 컨테이너는 애플리케이션의 객체를 생성하고 관리하며, 이를 통해 객체 간의 의존성을 관리한다. 여기서 제어의 역전은 객체의 생성과 생명주기를 개발자가 아니라 컨테이너에 위임하는 것을 의미한다.Spring IoC ContainerInversion of Control (IoC) 원칙을 따라 응용 프로그램의 객체 생성, 관리 및 의존성 주입을 담당한다.Dependency injection (DI) 는 IoC의 일종으로, 객체들이 그들의 의존성을 Constructor의 argumenet(.. 2024. 5. 6.
Spring Framework 란? Spring Framework스프링 프레임워크는 모든 종류의 배포 플랫폼에서 Java 기반 엔터프라이즈 애플리케이션을 개발하기 위한 오픈 소스 프레임워크Spring Framework의 역사스프링(Spring)은 2002년에 로드 존슨(Rod Johnson)이 개발한 경량 프레임워크로 시작되었다.초기에는 EJB(Enterprise JavaBeans)의 복잡성을 줄이고자 만들어졌으며, 특히 의존성 주입(Dependency Injection)과 관점 지향 프로그래밍(Aspect-Oriented Programming, AOP)을 강조했다.스프링은 자바 기반 엔터프라이즈 애플리케이션 개발을 위한 다양한 모듈과 기능을 제공하여 개발 생산성과 유지보수성을 향상시켰다.또한, 스프링의 경량화된 설계와 모듈화된 구조는 개.. 2024. 5. 6.
[Kotlin] RestClient를 MSA로 구성된 Spring module간 통신에 사용하는 예시 core module에 다음과 같은 interface를 생성한다package kpring.core.auth.clientinterface AuthClient { @PostExchange("/api/v1/validation") fun validateToken( @RequestHeader("Authorization") token: String, ): ResponseEntity} chat module에서 auth module의 api를 호출하기 위해 core module의 interface를 사용한다interface를 넘겨주면 HttpServiceProxyFactory 가 요청을 날리는 proxy를 생성한다package kpring.chat.config@Configurationcla.. 2024. 4. 25.
HTTP Interface Client, (RestClient, WebClient, RestTemplate의 차이) HTTP InterfaceSpring Framework를 사용하면 @HttpExchange 메서드가 있는 Java 인터페이스로 HTTP 서비스를 정의할 수 있다.이 인터페이스를 HttpServiceProxyFactory에 전달하여 RestClient 또는 WebClient 와 같은 HTTP 클라이언트를 통해 요청을 처리하는 프록시를 생성할 수 있다. interface → HttpServiceProxyFactory → HTTP client로 요청들을 날리는 proxy를 생성 혹은 @Controller 에서 인터페이스를 구현하여 서버 요청 처리를 할 수도 있다 HTTP Client의 종류 RestClient WebClient RestClient, WebClient, RestTemplate의 차이🔎를 알아보.. 2024. 4. 25.
Spring 프로젝트 HTTP에서 HTTPS로 변경하기 (Java로 SSL 만들어서 Spring 프로젝트에 적용하기(P12 방식)) Spring 프로젝트를 http에서 https로 만들기 위해서 SSL을 발급받아서 추가하는 방법을 설명하려고 한다 인텔리제이 cmd가 먹히지 않아서 Windows cmd prompt로 했다 관리자 모드로 열어주지 않으면 아래와 같은 에러가 발생한다 keytool error: java.io.FileNotFoundException: keystore.p12 (Access is denied) jdk bin으로 이동하면 keytool이 있어서 jdk bin으로 이동해준다 C:\\Program Files\\Java\\jdk-17\\bin> Keystore + 키 쌍 생성 keytool -genkey -alias {keystore name} -keyalg RSA -storetype PKCS12 -keystore {k.. 2024. 4. 17.