Spring 5

[Spring] BeanFactory와 ApplicationContext(스프링 컨테이너)

BeanFactory- 스프링 컨테이너의 최상위 인터페이스다.- 스프링 빈을 관리하고 조회하는 대부분의 기능을 BeanFactory가 제공한다. ApplicationContext- BeanFactory를 확장한 인터페이스로 더 많은 부가기능을 제공한다.- 국제화 기능, 환경변수 처리, 애플리케이션 이벤트 지원, 편리한 리소스 조회 등  보통 BeanFactory를 직접 사용하는 일은 거의 없고 편리한 부가기능이 포함된 ApplicationContext를 사용한다.BeanFactory나 ApplicationContext를 스프링 컨테이너라고 부른다.   스프링 컨테이너를 만들 때는 어노테이션 기반 자바 코드로 설정 정보를 넘기거나 xml 설정 파일을 넘기는 방법이 있다. 어노테이션 기반 자바 코드 설정//..

Spring 2024.07.20

[Spring] SpringBoot 와 React 연동하고 빌드하기

개발 환경SpringBoot 3.3.1java 17.0.10GradleMacOS Java SE 17 다운로드 : https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html  1.  Spring Boot 프로젝트 생성https://start.spring.io/GroupId 와 AritifactId 는 자유롭게 설정하고 나머지는 위와 같이 설정합니다. + Dependencies로 Spring Web 추가 (Spring Web 의존성을 추가하면 내장된 Tomcat 서버가 포함됨) 톰캣이란? 톰캣은 서블릿을 실행하고 관리하는 서블릿 컨테이너다. 서블릿은 Java 애플리케이션에서 HTTP 요청을 처리하고 동적인 웹 페이지를 생성하는 역..

Spring 2024.07.07

[Spring] Dependency Injection (의존성 주입) 이란?

스프링에서 의존성 주입이란 객체 간의 의존 관계를 외부에서 주입해주는 것을 의미합니다. 객체가 직접 필요한 의존 객체를 생성하거나 찾는 것이 아니라, 외부에서 제공된다는 개념입니다. 조금만 풀어서 다시 설명하면, 클래스 내부에서 다른 클래스의 인스턴스를 직접 생성하거나, 정적 메소드를 사용하여 객체를 얻는다면 이것은 강한 결합을 초래하여 하나의 클래스를 수정할 때, 결합된 다른 클래스들도 함께 수정해야만 하고 Mock 객체를 사용한 테스트가 어려워지는 등의 단점이 발생하는데, 이런 단점을 해결하기 위해 객체 간 의존 관계를 외부에서 주입하는 DI를 사용합니다. (결합도를 낮추어 코드의 유연성을 높임) *의존성 :  객체 지향 프로그래밍에서 하나의 객체가 다른 객체를 필요로 하거나 사용하는 관계 의존성 주..

Spring 2024.07.07

[Spring] 스프링 빈(Bean) 의 개념

오늘은 스프링 빈(Bean)이 무엇인지 알아보고자 합니다. 스프링에서 빈(Bean)은 스프링 컨테이너가 관리하는 객체를 의미합니다. 스프링은 인스턴스화 된 객체들을 생성하고 이들 간의 의존성을 설정하며, 스프링 컨테이너는 해당 객체의 생성, 초기화 등을 관리합니다. 이 과정에서 사용되는 객체들을 빈(Bean)이라고 부릅니다. 스프링 빈은 싱글톤(Singleton) 스코프를 가지는데 이는 스프링 컨테이너 내에서 동일한 빈 이름에 대해 단 하나의 인스턴스만 생성됨을 의미합니다. 싱글톤 스코프를 가지는 이유는 같은 로직을 담당하는 객체를 여러 번 만들지 않아도 되기 때문입니다. (메모리 부하를 방지)   * 스프링 빈이 생성되고, 존재하며 적용되는 범위를 스코프라고 함.    스프링 빈(Bean)을 사용하는 ..

Spring 2024.07.02

[Spring] spring-boot-devtools로 소스코드 수정 후 바로 적용하기

오늘은 스프링에서 view 환경설정 중 알게 된 spring-boot-devtools 모듈을 소개하고자 한다. 이전에 FastAPI로 간단한 웹 페이지를 구현해 본 적 있는데 FastAPI에서는 uvicorn이라는 ASGI 서버를 사용해 --reload 옵션으로 소스 코드 변경을 감지하고 자동으로 서버를 재시작하는 기능이 있었다. 이것을 핫 리로드라고 하는 것 같다. Spring Boot에서는 핫 리로드 기능을 위해  spring-boot-devtools 라이브러리를 제공하고, 이 라이브러리를 추가하면 html 파일을 컴파일만 해주면 서버 재시작 없이 View 파일 변경이 가능하다. Devtools 는 아래 5가지 기능을 제공한다고 한다.Property DefaultsAutomatic RestartLiv..

Spring 2024.06.26