Spring (18) 썸네일형 리스트형 스프링 부트의 자동 구성(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)을 핵심으로 하는 프레임워크유연성을 극대화하여 다양한 관점과 방식을 수용개발자에게 많은 선택권과 결정권을 부여스프링 부트는:스프링을 기반으로 한 애플리케이션을 빠르게 개발할 수 있도록 돕는 도구실무 환경에서 필요한 기능들을 미리 구성복잡한 설정 없이 독립 실행형 애플리케이션을 쉽게 작성 가능개발자의 의사결정 부담.. 서비스의 인증과 권한 부여 애플리케이션을 개발하다 보면 인증과 인가 등의 보안 기능을 추가해야 할 때가 있다. 스프링에 보안을 적용할 때는 스프링 시큐리티(Spring Security)의 보안 관련 기능을 활용할 수 있다. 1 용어 스프링 시큐티에 대해 알아보기에 앞서 보안과 관련된 용어를 알 필요가 있다. 1.1 인증(Authentication) 인증은 사용자가 누구인지 확인하는 단계를 의미한다. 대표적인 예로 '로그인'이 있다. 로그인은 데이터베이스에 등록된 아이디와 패스워드를 사용자가 입력한 아이디와 비밀번호와 비교해서 일치 여부를 확인하는 과정이다. 로그인에 성공하면 애플리케이션 서버는 응답으로 사용자에게 토큰(token)을 전달한다. 로그인에 실패한 사용자는 토큰을 전달받지 못해 원하는 리소스에 접근할 수 없다. 1.2 .. 서버 간 통신 최근에 개발되는 서비스들은 마이크로서비스 아키텍처(MSA)를 주로 채택하고 있다. MSA는 애플리케이션이 가지고 있는 기능(서비스)이 하나의 비즈니스 범위만 가지는 형태이다. 각 애플리케이션은 자신이 가진 기능을 API로 외부에 노출하고, 다른 서버가 그러한 API를 호출해서 사용할 수 있게 구성되므로 각 서버가 다른 서버의 클라이언트가 되는 경우도 많다. 1 RestTemplate이란? RestTemplate은 스프링에서 HTTP 통신 기능을 손쉽게 사용하도록 설계된 템플릿이다. HTTP 서버와 통신을 단순화한 이 템플릿을 이용하면 RESTful 원칙을 따르는 서비스를 편리하게 만들 수 있다. RestTemplate은 기본적으로 동기 방식으로 처리되며, 비동기 방식으로 사용할 땐 AsyncRestTe.. 이전 1 2 3 다음