Spring 5

[Spring Boot] IoC 컨테이너

IoC 컨테이너객체의 생성, 라이프사이클 관리, 의존성 주입을 책임지는 Spring프레임워크의 핵심 구성 요소이다제어의 역전(Inversion of Control, IoC) 원칙을 구현하여 애플리케이션의 객체와 객체 간의 의존성을 관리한다IoC객체 생성 및 의존성 관리를 개발자가 아닌 컨테이너가 담당하는 디자인 원칙이다즉, 객체는 자신이 사용할 의존성을 직접 생성하거나 관리하지 않고, 외부에서 주입받는다 IoC 의 핵심 개념객체 간의 결합도를 낮추어 코드 재사용성과 유지보수성을 높임애플리케이션의 구성 요소를 유연하고 확장 가능하게 설계IoC 컨테이너의 주요 역할1. 빈 등록 및 관리개발자가 정의한 빈을 생성하고 컨테이너에 등록빈의 라이프사이클(생성, 초기화, 소멸)을 관리2. 의존성 주입(DI)빈 간의 ..

[Spring Boot] 빈이란

빈(Bean)이란Spring IoC컨테이너에 의해 관리되는 객체를 의미한다Spring 애플리케이션에는 주요 구성 요소, 서비스, 리포지토리 등의 객체를 빈으로 등록하고 관리한다 특징1. 생성 및 관리Spring 컨테이너가 Bean의 생성, 초기화, 소멸을 책임진다개발자가 직접 객체를 생성하고 관리할 필요가 없다2. 의존성 주입(DI)빈 간의 의존성을 Spring이 관리하며 애플리케이션이 실행될 때 필요한 객체를 주입한다3. 싱글톤 기본 설정Spring 컨테이너는 기본적으로 각 빈을 싱글톤으로 생성하여 동일한 인스턴스를 애플리케이션 전반에서 공유한다 (필요시 다른 스코프를 지정 가능)4. 구성 파일 또는 어노테이션으로 정의XML 파일, 자바클래스, 또는 어노테이션을 통해 빈을 정의할 수 있다Spring B..

[Spring Boot] ApplicationRunner

ApplicationRunner란Spring Boot 애플리케이션 에서 애플리케이션 이 시작된 후 실행할 코드를 정의하기 위해 사용되는 인터페이스다.주로 초기화 작업이나 애플리케이션 시작 시 필요한 논리를 실행할 때 활용된다 특징애플리케이션 초기화 작업 수행 : 데이터베이스 초기화, 캐시 로드, 외부 API 호출 등Spring Boot 컨텍스트가 완전히 초기화된 후 실행 : 모든 Bean이 로드되고 애플리케이션 컨텍스트가 준비된 상태에서 실행된다CommandLineRunner와 유사 : 차이점은 `ApplicationRunner`는 `ApplicationArguments`를 사용하여 더 구조화된 방식으로 인수를 처리할 수 있다 ApplicationRunner 사용 방법1. ApplicationRunner..

[Spring Boot] ORM, @Query

ORM은 객체와 데이터베이스의 관계를 매핑하여, 객체지향 프로그래밍 언어의 객체를 데이터베이스의 테이블에 대응시키는 기술이다. 개발자는 SQL을 직접 작성하지 않아도 객체지향 방식으로 데이터를 다룰 수 있다 장점생산성 향상: 데이터베이스 쿼리를 객체지향 방식으로 다룰 수 있어 코드 작성이 단순해짐가독성 증가: 객체와 테이블 간 매핑으로 인해 코드가 더 직관적이고 읽기 쉬움유지보수 용이: 데이터베이스가 변경되더라도 매핑 설정만 수정하면 애플리케이션 수정 최소화데이터베이스 독립성: 특정 데이터베이스에 종속되지 않고 다양한 데이터베이스에서 동작 가능단점성능 오버헤드: ORM이 쿼리를 자동으로 생성하므로 직접 작성한 SQL보다 성능이 낮을 수 있음복잡한 쿼리 처리 어려움: 복잡한 비즈니스 로직이 필요한 경우 S..

[Spring] Spring 과 Spring Boot

1. Spring 프레임워크1.1. Spring이란Spring은 효율적으로 개발할 수 있도록 지원하는 경량 오픈소스 프레임워크기존의 복잡한 Java EE 기반 개발의 단점을 보완하여 등장POJO(Plain Old Java Object) 프로그래밍과 의존성 주입(DI, Dependency Injection) 및 관점 지향 프로그래밍(AOP, Aspect-Oriented Programming) 같은 기능을 중심으로 설계됨1.2. Spring의 핵심 개념1.2.1. IoC (Inversion of Control)객체의 생성과 생명 주기를 개발자가 관리하지 않고, spring컨테이너가 관리주로 의존성 주입(DI) 으로 구현됨예 : `@Autowired` 를 통한 주입1.2.2. AOP (Aspect-Orient..