Spring

Spring/Spring MVC - 활용

로그(logging)

로깅(logging) 로그는 애플리케이션의 실행 상태나 다양한 이벤트를 기록하는 중요한 요소이다. 운영 시스템에서는 System.out.println() 같은 시스템 콘솔을 사용해서 필요한 정보를 출력하지않고, 별도의 로깅 라이브러리를 통해 이러한 로그를 관리한다. 로깅 라이브러리 스프링 부트는 'Spring-boot-starter-logging' 을 포함하여 기본적인 로깅 라이브러리를 제공한다. 이 라이브러리는 내부적으로 다음과 같은 구성을 가진다. SLF4J(Simple Logging Facade for Java) : 다양한 로깅(Logback, Log4J, Log4J2)등 라이브러리를 하나의 인터페이스로 통합한다.Logback : SLF4J 인터페이스의 구현체로, 실제 로깅 작업을 수행한다. 실무에..

Spring

빈 스코프

스프링 빈 스코프 스프링 빈의 스코프는 빈의 생명주기, 즉 빈이 생성되고 소멸되는 기간을 말한다. 스프링 프레임워크는 여러 가지 스코프를 제공하여 개발자가 다양한 상황에 맞춰 적절한 빈의 생명주기를 선택할 수 있게 도와준다. 1. 싱글톤 (Singleton) 스코프 스프링 컨테이너의 시작부터 종료될 떄까지 빈의 인스턴스를 하나만 생성하여 사용하는 스코프이다. 스프링의 대부분의 빈은 싱글톤 스코프로 설정되어 있으며, 같은 스프링 빈을 호출하면 항상 동일한 인스턴스가 반환된다. 2. 프로토 타입(ProtoType) 스코프 빈을 요청할 때마다 새로운 인스턴스를 생성하는 스코프이다. 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입을 책임지지만, 그 이후의 라이프사이클은 스프링에서 관리하지 않는다. 3. ..

Spring/Spring 핵심 원리

빈 생명주기 콜백

빈 생명주기 콜백 스프링 프레임워크는 애플리케이션의 시작과 종료 시점에 라이프사이클 콜백을 제공한다. 이러한 기능을 통해 애플리케이션에서 사용하는 외부 리소스나 연결을 관리할 수 있다. 예를 들어, 데이터베이스 커넥션 풀이나 네트워크 소켓 같은 리소스를 애플리케이션 시작 시점에 미리 연결하고, 애플리케이션 종료 시점에 해제하는 작업을 할 수 있다. public class NetworkClient { private String url; public NetworkClient() { System.out.println("생성자 호출, url = " + url); connect(); call("초기화 연결 메시지"); } public void setUrl(String url) { this.url = url; } ..

Spring/Spring 핵심 원리

의존관계 자동 주입

다앙한 의존관계 주입 방법 의존관계 주입 4가지 방법 생성자 주입 수정자 주입(Setter 주입) 필드 주입 일반 메서드 주입 생성자 주입 생성자 주입은 객체를 생성할 때 생성자를 통해 의존성을 주입하는 방법을 말한다. 객체의 생성과 동시에 필요한 의존성을 제공하여 객체가 정상적으로 동작할 수 있도록 한다. 생성자 주입 특징 단 한 번의 호출 보장 : 생성자는 객체 생성 시점에 딱 한 번만 호출되므로, 의존성도 한 번만 주입된다. 이로 인해 여러 번의 변경 없이 한 번 설정된 의존성이 유지되는 것이 보장된다. 불변성 : 생성자를 통해 주입된 의존성은 변경될 수 없다. 이를 통해 객체의 안정성을 보장할 수 있다. 필수 의존관계 : 생성자 주입은 필수적으로 파라미터값이 존재해야 한다. 더보기 @Autowir..

Spring/Spring 핵심 원리

컴포넌트 스캔(Component Scan)

컴포넌트 스캔과 의존관계 자동 주입 컴포넌트 스캔이란? @ComponentScan 은 설정 파일에 사용되며, 이 어노테이션을 사용하면 해당 패키지 하위 모든 클래스 중 @Component 가 붙은 클래스를 스캔하여 스프링 빈으로 자동 등록 한다. 지금까지 예제처럼 스프링 빈을 등록할 때 자바 코드의 @Bean이나 XML의 등을 통해서 설정 정보에 직접 스프링 빈을 등록 한다면, 등록해야 할 스프링 빈이 수십, 수백개가 되면 설정 정보가 커지고, 누락하는 문제도 발생하게 된다. 그래서 스프링은 설정 정보없이도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔이라는 기능을 제공한다. 또한 의존관계도 자동으로 주입하는 @Autowired 기능도 제공한다. AutoAppConfig.java 더보기 package he..

Spring/Spring 핵심 원리

싱글톤 컨테이너

웹 애플리케이션과 싱글톤 스프링은 기업용 온라인 서비스를 지원하기 위해 탄생했으며, 대다수의 스프링 애플리케이션은 웹 기반이다. 웹 애플리케이션의 특성상, 여러 사용자가 동시에 서비스에 접근하게 된다. 스프링 없는 순수한 DI컨테이너 테스트 더보기 package hello.core.Singleton; import hello.core.AppConfig; import hello.core.member.MemberService; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; public class SingletonTest { @Test @Display..

Spring/Spring 핵심 원리

스프링 컨테이너와 스프링 빈

이전 예제 스프링 핵심원리 기본편 - 회원,주문 도메인 설계 스프링 컨테이너 생성 스프링 컨테이너가 생성되는 과정 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); ApplicationContext : 스프링 컨테이너의 인터페이스로, 애플리케이션의 빈 설정과 라이프사이클을 관리한다. 스프링 컨테이너는 XML을 기반으로 만들 수 있고, 애노테이션 기반의 자바 설정 클래스로 만들 수 있다. AnnotationConfigApplicationContext : "ApplicationContext" 인터페이스의 구현체 중 하나로, 애노테이션 기반의 자바 설정 클래스를 처리한다. BeamFact..

Spring/Spring 핵심 원리

애자일 소프트웨어 개발 4대 선언, 12가지 원칙

애자일 선언문 모든 일은 유타 주에 있는 로지 앳 스노버드 스키 리조트에서 시작되었다. 서로 다른 개발 방법론을 입안한 이들과 업계 선두주자 몇명이 모여서 소프트웨어 개발이 어떤 방식으로 이루어져야 하는지에 대해 논의하던 중 "애자일 선언문"을 만들었다. 1. 프로세스와 도구보다 개인과 상호 작용을 중시한다. 2. 방대한 문서 작업보다 작동하는 소프트웨어를 중시한다. 3. 계약 협상보다 고객과 협력을 중시한다. 4. 계획을 따르기보다 변화에 대응한다. 먼저 언급한 것도 가치가 있지만, 뒤에 언급한 것에 더 높은 가치를 둔다는 뜻이다. 애자일 소프트웨어 개발 12가지 원칙 1. 우리는 가치 있는 소프트웨어를 빠르게 그리고 지속적으로 제공해서 고객을 만족시키는 것을 가장 중요하게 생각한다. 2. 개발의 후반..

진이최고다
'Spring' 카테고리의 글 목록 (2 Page)