전체 글 (44) 썸네일형 리스트형 스프링 부트의 자동 구성(Auto Configuration) 이해하기 스프링 부트가 어떻게 애플리케이션 개발을 빠르고 편리하게 해주는지, 그 핵심 기술인 자동 구성(Auto Configuration)의 내부 동작 원리를 살펴보겠습니다. 메타 어노테이션과 합성 어노테이션(Composed Annotation)합성 어노테이션(Composed Annotation)합성 어노테이션은 하나 이상의 메타 어노테이션을 적용해서 만든 어노테이션입니다. 이를 사용하면 클래스나 메서드에 적용했을 때 해당 어노테이션이 가진 모든 메타 어노테이션이 함께 적용되는 효과를 얻습니다. 여러 어노테이션을 반복적으로 사용하는 경우 코드가 지저분해질 수 있습니다. 이럴 때 자주 사용되는 조합을 합성 어노테이션으로 만들면 코드를 간결하게 유지할 수 있습니다. 예를 들어, @RestController는 @C.. 스프링 애플리케이션 테스트와 디자인 패턴 소프트웨어 개발에서 테스트는 필수적인 부분입니다. 특히 스프링 기반 애플리케이션에서는 다양한 계층별 테스트 방법과 디자인 패턴을 활용한 유연한 구조 설계가 중요합니다. 이 글에서는 스프링 애플리케이션의 테스트 방법과 함께 DI(의존성 주입)를 활용한 대표적인 디자인 패턴인 데코레이터 패턴과 프록시 패턴에 대해 알아보겠습니다. API 테스트API 테스트는 애플리케이션의 엔드포인트를 직접 호출하여 응답을 검증하는 방식입니다. 이 테스트는 실제 서버가 실행된 상태에서 수행됩니다.public class HelloApiTest { @Test void helloApi() { // API 요청을 호출하여 응답을 사용할 수 있음 TestRestTemplate rest = new TestRestTemp.. 스프링 컨테이너의 이해와 독립 실행형 애플리케이션 구현 (2부) 스프링의 구성 정보 관리 방식스프링 컨테이너를 초기화하기 위해서는 구성 정보(Configuration Metadata)가 필요합니다. 스프링은 여러 방식으로 이 구성 정보를 제공할 수 있습니다. Java 코드 기반 구성자바 코드를 이용한 구성 방식은 @Configuration과 @Bean 어노테이션을 사용합니다:@Configurationpublic class HellobootApplication { @Bean public HelloController helloController(HelloService helloService) { return new HelloController(helloService); } @Bean public HelloService helloService() { r.. 스프링 컨테이너의 이해와 독립 실행형 애플리케이션 구현 (1부) 스프링 컨테이너의 개념과 역할지난 시간에 독립 실행이 가능한 서블릿 애플리케이션을 만들어 보았다면, 이번에는 스프링 컨테이너를 활용하여 독립 실행형 스프링 애플리케이션을 구현하는 방법을 알아보겠습니다. 이를 통해 스프링 부트의 내부 동작 원리를 이해할 수 있습니다. 스프링 컨테이너란?스프링 컨테이너는 스프링 프레임워크의 핵심 컴포넌트로, 애플리케이션의 객체들(빈)을 생성하고 관리하는 역할을 합니다. 컨테이너는 객체의 생명주기를 관리하고 의존성 주입(DI)을 통해 객체 간의 관계를 설정합니다. 스프링 컨테이너는 크게 두 가지 요소가 필요합니다:비즈니스 로직을 담고 있는 POJO(Plain Old Java Object)특정 프레임워크의 클래스를 상속하지 않은 일반 자바 객체애플리케이션 구성 정보(Confi.. 스프링과 스프링 부트의 이해 (2부): 내부 동작 원리와 웹 애플리케이션 개발 스프링 부트 웹 애플리케이션 개발스프링 부트를 사용하면 웹 애플리케이션 개발이 매우 간단해집니다. 특히 REST API 개발은 몇 줄의 코드만으로도 가능합니다. 컨트롤러 개발스프링 부트에서는 다음과 같이 간단하게 컨트롤러를 작성할 수 있습니다:@RestControllerpublic class HelloController { @GetMapping("/hello") public String hello(String name) { return "Hello " + name; }} 여기서 @RestController 어노테이션은:HTML을 통째로 반환하는 대신 API 응답을 생성@Controller와 @ResponsBody를 메타 어노테이션으로 가지고 있습니다.HTTP 요청 본문을 특정 타입으로 변환하.. 스프링과 스프링 부트의 이해 (1부): 기본 개념과 특징 스프링과 스프링 부트의 관계많은 개발자들이 스프링과 스프링 부트를 혼동하곤 합니다. 그러나 이 둘은 같은 것이 아닙니다. 스프링 부트는 스프링 프레임워크를 기반으로 하되, 더 쉽고 빠르게 개발할 수 있도록 설계된 도구입니다. 스프링 vs 스프링 부트스프링 프레임워크는:자바 엔터프라이즈 애플리케이션 개발을 위한 포괄적인 프로그래밍 및 설정 모델 제공의존성 주입(DI)과 관점 지향 프로그래밍(AOP)을 핵심으로 하는 프레임워크유연성을 극대화하여 다양한 관점과 방식을 수용개발자에게 많은 선택권과 결정권을 부여스프링 부트는:스프링을 기반으로 한 애플리케이션을 빠르게 개발할 수 있도록 돕는 도구실무 환경에서 필요한 기능들을 미리 구성복잡한 설정 없이 독립 실행형 애플리케이션을 쉽게 작성 가능개발자의 의사결정 부담.. 스레드의 이해 들어가며: 스레드란 무엇인가?지금까지 우리는 프로세스를 단일 제어 흐름을 가진 실행 프로그램으로 이해했습니다. 하지만 실제로 프로세스는 여러 개의 제어 흐름, 즉 '스레드(Thread)'를 가질 수 있습니다. 스레드는 '가벼운 프로세스(lightweight process)'라고도 불리며, CPU 활용의 기본 단위가 됩니다. 1. 스레드의 구조와 특징1.1 스레드 구성 요소각 스레드는 다음 요소들을 독립적으로 가집니다:Thread IDProgram CounterRegister SetStack 1.2 싱글스레드 vs 멀티스레드싱글스레드 프로세스:[코드 | 데이터 | 파일 | 스택 | PC | 레지스터]멀티스레드 프로세스:공유 영역: [코드 | 데이터 | 파일]스레드 1: [스택 | PC | 레지스터]스레드 .. 프로세스 간 통신의 이해 : 소켓과 RPC 들어가며: 네트워크 통신이 필요한 이유현대 컴퓨팅 환경에서는 다른 컴퓨터의 프로세스와 통신해야 하는 경우가 많습니다:웹 서비스와 클라이언트 간 통신분산 데이터베이스 시스템클라우드 서비스실시간 협업 도구이러한 네트워크 통신을 위해 주로 사용되는 두 가지 방식이 소켓(Socket)과 원격 프로시저 호출(RPC)입니다. 1. 소켓 (Sockets) 1.1 소켓의 기본 개념 소켓은 네트워크상의 두 프로세스가 통신할 수 있게 해주는 엔드포인트입니다. IP 주소와 포트 번호를 조합하여 특정 통신 엔드포인트를 식별합니다.[IP 주소]:[포트 번호]예: 192.168.1.100:8080 1.2 소켓의 종류와 특징 TCP 소켓 (연결 지향)[클라이언트] ←=== 연결 수립 ==→ [서버] ↑↓ 데이터 전.. 이전 1 2 3 4 ··· 6 다음