본문 바로가기
728x90

[Spring]43

스프링 컨테이너(IoC / DI 컨테이너), BeanDefinition 컨테이너(Container) 인스턴스의 생명주기(라이프 사이클)을 관리한다. 생성된 인스턴스에 추가적인 기능을 제공한다. 톰캣(WAS)은 Servlet 컨테이너를 통해 Servlet 요청을 해결한다. 스프링의 IoC / DI 컨테이너 스프링에서 객체를 생성하고 관리하며 객체 간 의존 관계를 연결해 준다. 의존 관계 주입에 포커스를 맞추어 최근에는 DI 컨테이너라고 부르는 경우도 많다. 혹은 어샘블러, 오브젝트 팩토리 등으로도 불린다. BeanFactory 스프링 컨테이너의 최상위 인터페이스이다. 스프링 빈을 관리하고 조회하는 역할을 담당한다. IoC/DI에 대한 기본 기능을 가지고 있다. ApplicationContext BeanFactory 기능을 모두 상속받아 제공한다. 보통 스프링 컨테이너라고하면 .. 2023. 2. 28.
트랜잭션 전파(Transaction Propaganda) & 트랜잭션 격리 레벨(Isolation Level) 1분 요약 정리 트랜잭션 전파(Transaction Propaganda) 트랜잭션의 경계에서 진행 중인 트랜잭션의 존재 여부에 따라 어떻게 동작할 것인지 결정하는 방식으로 propagation 애트리뷰트를 통해서 설정할 수 있다. @Transacional(Propagation.REQUIRED) 일반적으로 가장 많이 사용되는 Propagation 유형의 디폴트 값이다. 진행 중인 트랜잭션이 있으면 해당 트랜잭션에 참여하고, 없으면 새로 트랜잭션을 시작한다. Propagation.REQUIRES_NEW 이미 진행중인 트랜잭션과 무관하게 새로운 트랜잭션이 시작되며, 기존의 트랜잭션은 새로 시작된 트랜잭션이 종료할 때까지 중지된다. Propagation.MANDATORY 진행중인 트랜잭션이 없으면 예외를 발생시킨다. Propa.. 2022. 12. 4.
JDBC와 Spring Data JDBC JDBC(Java Database Connectivity) Java 기반의 코드 레벨에서 사용하는 데이터를 데이터 베이스에 저장 및 업데이트하거나 그 반대로 데이터베이스 내의 데이터를 Java 코드 레벨에서 사용할 수 있게 해주는 표준 사양(명세, Specification)이다. Java 애플리케이션 -> JDBC API -> JDBC 드라이버 -> 데이터베이스 구조의 동작 흐름을 가지고 있다. Connection Pool JDBC API를 사용해서 데이터베이스와의 연결을 위한 Connection 갹체를 생성하는 일은 비용이 꽤 많이 든다. 이 비용을 줄이기 위해 애플리케이션 로딩 시점에 Connection 객체를 미리 생성해두고 애플리케이션에서 데이터베이스에 연결이 필요할 때 미리 만들어둔 Connec.. 2022. 11. 22.
@NotNull, @NotBlank, @NotEmpty 차이 @NotNull Null 허용 x "" 허용 " " 허용 type 관계 x @NotEmpty Null 허용 x "" 허용 x " " 허용 int, long ,Interger 등 x @NotBlank Null 허용 x "" 허용 x " " 허용 x String만 허용 2022. 11. 17.
스프링의 엔트리 포인트 클래스 import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication // 1 public class TestApplication { public static void main(String[] args) { SpringApplication.run(TestApplication.class, args); // 2 } } 엔트리포인트(Entrypoint) : 애플리케이션 시작점을 의미한다. 위 코드는 스프링을 생성하면 이미 작성되어있다. 1. @SpringBootApplication 자동 구성을 활성화한다. 애플리케이션 패키지 .. 2022. 11. 16.
스프링 관련 애너테이션, 클래스, 메서드 무지성 정리 @SpringBootAplication 코드 상에 보이지 않지만 자동 구성, @Component가 붙은 클래스를 검색하여 Spring Bean으로 등록하는 기능, @Configuration이 붙은 클래스를 자동으로 찾아 추가적으로 Spring Bean으로 등록하는 기능을 활성화한다. @SpringApplication.run(클래스명.class, args); Spring 애플리케이션을 부트스트랩(애플리케이션 실행 전 여러 설정 작업을 통해 실행 가능하게 만드는 단계)하고 실행하는 역할 @RestController Spring MVC에서는 특정 클래스에 @RestController를 추가하면 해당 클래스가 REST API의 리소스를 처리하기위한 API 엔드포인트로 동작함을 정의한다. 또한, 애플리케이션 로딩.. 2022. 10. 26.
스프링 부트(Spring Boot)란? 스프링 부트(Spring Boot) 스프링 프레임워크의 편리함과는 별개로 설정의 복잡함으로 인해 스프링 기반 애플리케이션 개발을 시작하기도 전에 어려움을 겪는 문제점을 해결하기 위해 생겨난 스프링 프로젝트 중 하나이다. 스프링 부트를 사용해야하는 이유 XML 기반의 복잡한 설계 방식 지양 의존 라이브러리 자동 관리 애플리케이션 설정의 자동 구성 프로덕션급 애플리케이션의 손쉬운 빌드 내장된 WAS를 통한 손쉬운 배포 WAS(Web Application Server) WAS는 구현된 코드를 빌드해서 나온 결과물을 실제 웹 애플리케이션으로 실행되게 해주는 서버이다. Java진영에서 사용되는 대표적인 WAS에는 Tomcat이 있다. Java 기반의 웹 애플리케이션을 배포하는 일방적인 방식은 개발자가 구현한 애플.. 2022. 10. 12.
아키텍처(Architecture)와 스프링 프레임워크 모듈(Spring Framework Module) 구성 아키텍처(Architecture) 건축 분야에서 유래된 용어로 요구사항을 만족하는 건축물을 짓는데 있어 청사진과 같은 역할을 한다. 소프트웨어 아키텍처(Software Architecture) 소프트웨어의 구성을 큰 그림으로 표현한 것이다. 애플리케이션(Application) 소프트웨어 종류의 하나로 좁게는 데스크탑이나 스마트폰에서 사용하는 응용 프로그램을 말하며, 넓게는 클라이언트의 요청을 처리하는 서버 애플리케이션을 뜻한다. 웹 개발을 위해 중점적으로 알고있어야 하는 아키텍처는 웹 상에서 동작하는 웹 애플리케이션을 위한 아키텍처이다. 계층형 웹 애플리케이션 아키텍처 API 계층(API Layer) 클라이언트의 요청을 받아들이는 계층으로 일반적으로 표현 계층(Presentation Layer)라고 불리.. 2022. 10. 12.
728x90