일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- spring aop
- Di
- spring
- Spring JDBC
- pointcut
- Linux
- Framework
- POJO
- spring framework
- @AspectJ
- STS
- 컨테이너
- JDBC TEMPLATE
- AOP
- SpringJDBC
- java
- 마이바티스
- @test
- Ubunt
- JdbcTemplate
- java spring
- @JUnit
- 프로퍼티
- XML
- 리눅스
- Dependency Injection
- Spring Boot
- unix
- myBatis
- @Spring-Test
- Today
- Total
목록토비의 스프링 부트 - 이해와 원리 (66)
개키우는개발자 : )
Spring Boot의 내장형 톰캣 서버를 이용해 Servlet을 등록하고, 이를 통해 서블릿 컨테이너에서 웹 요청을 처리하는 방법을 다루었습니다. 이를 통해 톰캣 서버를 설치하지 않고 간단한 Java 코드로 서블릿을 구현하는 방법을 학습할 수 있었습니다.주요 내용 요약:Servlet 컨테이너 설정:TomcatServletWebServerFactory를 사용하여 임베디드 톰캣 서버를 시작했습니다. 이 클래스는 톰캣 서버를 생성하고 구성하는 작업을 도와주는 팩토리 클래스로, 톰캣 외에도 다른 서블릿 컨테이너를 쉽게 교체할 수 있도록 추상화된 방식으로 작동합니다.서버가 정상적으로 동작하는지 확인하기 위해 8080 포트로 서버를 실행하고, 톰캣이 정상적으로 뜨는지 테스트했습니다. 404 에러는 기본적인 서버 ..
스프링 부트의 컨테이너리스 서블릿 컨테이너 동작 원리를 이해하고, 이를 코드로 구현하는 내용을 다룹니다. 복잡한 서블릿 컨테이너 설치 및 설정 과정을 자동화하고, 개발자가 서블릿에 집중할 수 있게 해주는 스프링 부트의 특징을 설명합니다. 아래는 이 내용을 요약한 설명입니다.주요 내용 요약:서블릿 컨테이너리스 구조:서블릿 컨테이너(Tomcat 등)를 별도로 설치하지 않고도, 애플리케이션 내에서 자동으로 실행할 수 있는 방법을 설명합니다.개발자는 서블릿 컨테이너 설정이나 배포를 신경 쓸 필요 없이, 애플리케이션 코드(빈, 컴포넌트) 작성에 집중할 수 있습니다.Tomcat을 코드로 시작하기:Tomcat을 메인 메소드에서 직접 시작하는 방법을 설명하며, 이를 통해 서블릿 컨테이너를 코드로 실행합니다.Embedd..
스프링 부트의 컨테이너리스 애플리케이션 구조와 동작 원리에 대해 다룹니다. 컨테이너리스를 통해 서블릿 컨테이너와 관련된 복잡한 작업을 자동화하고, 개발자가 애플리케이션 개발에만 집중할 수 있도록 합니다. 아래는 이 내용을 요약한 설명입니다.주요 내용 요약:컨테이너리스(Spring Boot의 특징):스프링 부트는 서블릿 컨테이너와 관련된 복잡한 작업(Tomcat 설치, 배포 설정 등)을 자동으로 처리하여, 개발자가 애플리케이션 코드에만 집중할 수 있도록 돕습니다.서블릿 컨테이너를 설치하거나 XML 설정을 작성하지 않고도, 간단히 메인 메소드 실행으로 스프링 애플리케이션을 구동할 수 있습니다.HelloController 예제:HelloController를 통해 /hello 경로로 요청을 받아 name 파라미..
웹 애플리케이션의 기본 구조:웹 클라이언트(사용자)가 웹 요청을 웹 컨테이너(서버)에 보내면, 서버는 이를 처리할 웹 컴포넌트(컨트롤러 등)를 찾아 요청을 전달합니다.웹 컴포넌트는 요청을 처리하여 응답을 생성하고, 이를 웹 클라이언트에게 반환합니다.웹 요청과 응답은 항상 쌍을 이루며 동작합니다. 요청이 있어야 응답도 발생합니다.HTTP 프로토콜 개요:웹 클라이언트와 서버 간의 통신은 HTTP(Hypertext Transfer Protocol) 프로토콜을 통해 이루어집니다. 이 프로토콜은 요청과 응답의 구조를 정의하고, 이를 기반으로 양쪽이 대화할 수 있도록 합니다.요청과 응답은 구조가 매우 유사하며, 첫 번째 줄에 중요한 정보가 포함되고 그 뒤로 헤더와 바디가 따라옵니다.HTTP 요청 구조:첫 줄: 요청..
우리가 만든 컨트롤러가 기대대로 정상적으로 동작했지만, 이런 테스트가 브라우저 화면에서만 가능한지, 그리고 이것만으로 충분한지 고민해볼 필요가 있습니다. 사실 웹 애플리케이션은 HTTP 요청과 응답의 다양한 과정이 필요하며, 이를 정확히 테스트해야 전체 기능을 확인할 수 있습니다.HTTP API 테스트 방법:브라우저 개발자 도구를 이용한 테스트크롬 개발자 도구를 열면, HTTP 요청과 응답의 헤더, 바디 정보를 확인할 수 있습니다.헤더 정보는 요청 및 응답 시 중요한 구성 요소이며, 특히 Content-Type 헤더는 응답이 HTML, JSON, 텍스트 중 어떤 형식인지 알려줍니다.cURL을 이용한 테스트cURL 명령어를 사용해 커맨드라인에서 HTTP 요청을 보내고 응답을 확인할 수 있습니다.curl -..
IntelliJ에서 프로젝트 불러오기IntelliJ IDEA에서 프로젝트 열기IntelliJ IDEA를 열고, 파일 → Open 메뉴를 선택하여 프로젝트가 있는 폴더를 불러옵니다.또는 커맨드 라인에서 IntelliJ를 실행하는 명령을 통해 현재 폴더를 오픈할 수 있습니다.프로젝트 구조 확인IntelliJ에서 프로젝트 구조가 잘 보이는지 확인합니다. 이 구조는 Spring Initializer를 통해 만든 것과 동일해야 합니다.만약 IntelliJ가 최신 버전으로 업데이트된 상태라면 초기 설정 과정에서 약간의 호환성 문제로 에러 메시지가 뜰 수 있습니다. 그런 메시지는 무시하고 진행해도 무방합니다.간단한 기능 추가이제 간단한 기능을 추가해 보겠습니다. Hello Boot 애플리케이션이니까, /hello라는..
Spring Boot 프로젝트 생성 방법Spring Boot 프로젝트를 만드는 방법은 여러 가지가 있습니다. 여러분이 사용하는 대부분의 방법은 아마도 Spring Initializer를 사용하는 것이 될 텐데요, Spring Initializer는 Spring Boot 프로젝트를 생성해 주는 공식 도구입니다.Spring Initializer 웹사이트 사용웹사이트 주소는 start.spring.io입니다.이 사이트에서 프로젝트의 기본 설정과 필요한 의존성(dependencies)을 선택할 수 있습니다. 설정 후, Generate 버튼을 누르면 프로젝트 템플릿이 ZIP 파일로 다운로드됩니다.여기서 우리는 Gradle과 Java 언어를 선택할 것이며, Spring Boot 버전은 2.7.6을 사용할 것입니다...
스프링 부트 버전 결정강의는 스프링 부트 2.7.6 버전을 기준으로 진행됩니다. 최근 스프링 부트 3.0이 출시되었지만, 변화가 많아 이번 강의는 2.7.6 버전으로 유지됩니다.JDK 버전스프링 부트 버전이 결정되면 JDK 버전도 선택해야 합니다. 스프링 부트 2.7.6에서는 JDK 8, 11, 17 버전을 사용할 수 있습니다.다양한 OpenJDK 빌드를 사용할 수 있으며, Oracle JDK는 유료이기 때문에 Eclipse Temurin, Amazon Corretto, Azul JDK와 같은 무료 OpenJDK 버전을 추천합니다.JDK 관리 도구SDKMAN과 같은 도구를 통해 여러 JDK 버전을 쉽게 관리할 수 있습니다. 이를 통해 다양한 JDK 버전을 설치하고 쉽게 전환할 수 있으며, 프로젝트마다 다..
1. 스프링 부트를 이해한다는 것의 의미스프링 부트를 사용할 때, 모든 기술을 깊이 이해할 필요는 없습니다. 그러나 때로는 그 기술을 이해하는 것이 매우 유익할 수 있으며, 이를 바탕으로 스프링 부트를 더 잘 활용할 수 있습니다.스프링 부트는 이미 검증된 기술과 구성을 제공하므로, 애플리케이션 기능 개발에만 집중할 수 있습니다. 또한, 스프링 부트가 제공하는 외부 설정 파일을 통해 일부 설정을 쉽게 변경할 수도 있습니다.2. 스프링 부트에 대한 오해많은 사람들이 스프링 부트가 모든 기술적 결정을 알아서 해주기 때문에, 애플리케이션 코드만 작성하면 된다고 생각합니다. 그러나 이것은 한계점이 있을 수 있습니다.또 다른 오해는 스프링 부트만 잘 알면 스프링 자체는 몰라도 된다는 생각입니다. 스프링 부트는..
1. opinionated의 의미기본 정의: opinionated는 "자신의 의견을 강하게 고집하는", "독선적인"이라는 뜻을 가지고 있습니다. 스프링 부트가 스스로를 opinionated하다고 소개하는 이유는 개발자가 처음부터 모든 기술적 결정을 직접 하지 않아도, 스프링 부트가 이미 검증된 방식을 제안하기 때문입니다.2. 스프링 프레임워크의 설계 철학유연성: 스프링 프레임워크는 20년 이상 극단적으로 유연한 프레임워크로 알려져 있습니다. 다양한 기술을 통합할 수 있으며, 이로 인해 개발자는 여러 선택지를 가질 수 있지만, 그만큼 많은 결정을 직접 내려야 합니다.다양한 기술의 통합: 스프링은 다양한 기술, 오픈소스, 상용 기술을 모두 수용하는 철학을 가지고 있습니다. 이는 장점이지만, 개발자는 프로..
1. 컨테이너리스란?의미: "컨테이너리스"라는 용어는 단어 그대로 "컨테이너가 없는"이라는 뜻을 가지고 있습니다. 그렇다면 여기서 말하는 컨테이너가 무엇을 뜻할까요? 이 개념은 서버리스(Serverless) 아키텍처와 유사합니다.서버리스와의 유사성: 서버리스 아키텍처는 개발자가 서버의 설치나 관리에 신경 쓰지 않고 애플리케이션 개발과 배포에 집중할 수 있게 하는 방식입니다. 이와 비슷하게, 컨테이너리스는 웹 애플리케이션의 컨테이너를 따로 관리하지 않아도 되도록 돕습니다.2. 컨테이너란 무엇인가?컨테이너의 역할: 전통적인 웹 애플리케이션에서 컨테이너는 웹 컴포넌트를 관리하고 동작시키는 역할을 합니다. 예를 들어, 서블릿 컨테이너는 자바 웹 애플리케이션에서 **서블릿(Servlet)**을 관리하고, 클라..
1. 스프링 부트의 시작출발점: 2012년, 스프링 프레임워크 프로젝트의 이슈 트래커에 "컨테이너리스 웹 애플리케이션 아키텍처"를 위한 스프링 개선 요청이 올라왔습니다. 이는 전통적인 웹 개발 방식이 너무 복잡하다는 문제점을 지적하며, 루비 온 레일스(Ruby on Rails), 노드JS(Node.js), 파이썬 등의 단순한 접근 방식과 비교해 스프링이 복잡하다는 요청이었습니다.2. 스프링 부트 프로젝트의 시작프로젝트의 결정: 스프링 개발자들은 이 요구를 수용하면서, 스프링을 직접 고치는 대신 새로운 프로젝트인 스프링 부트를 시작하기로 결정했습니다.첫 버전 공개: 2013년 8월, 스프링 부트 0.5.0 마일스톤 1(M1) 버전이 공개되었습니다. 이 프로젝트는 빠르게 주목을 받으며, 스프링을 더 쉽고..
1. 스프링 부트란 무엇인가?프레임워크인가? 도구인가? 라이브러리인가?: 스프링 부트는 하나의 프레임워크, 도구, 그리고 라이브러리로서 다양한 기능을 제공하는 "도구의 모음"입니다. 스프링 프레임워크를 기반으로 하지만 그 자체로도 독립적인 기술로서 기능합니다.스프링 부트의 역할: 스프링 부트는 스프링 애플리케이션을 쉽게 만들 수 있도록 도와줍니다. 특히 스프링을 활용한 독립 실행형 애플리케이션을 빠르고 간편하게 작성할 수 있도록 지원합니다.2. 스프링 부트와 스프링의 관계스프링 부트는 스프링의 대체가 아니다: 스프링 부트는 스프링을 대체하는 것이 아니라, 스프링 애플리케이션을 더 쉽게 만들 수 있도록 돕는 기술입니다. 스프링 부트를 사용하면서도 실제로는 스프링을 사용하는 것입니다.스프링과 스프링 부..
1. 스프링 부트와의 첫 경험스프링 프레임워크에 대한 자신감: 12년 동안 스프링 프레임워크를 사용하며, 책을 집필한 경험도 있어 스프링 부트를 쉽게 사용할 것이라고 예상.첫 시도에서의 충격: 예상과는 달리 스프링 부트는 기존 스프링 프레임워크와 다른 방식으로 작동, 특히 빈 구성과 DB 연결 정보를 처리하는 방식에서 혼란을 겪음.2. 스프링 부트에 대한 깊은 이해로 나아가기자동화된 설정에 대한 불안: 커넥션 풀과 같은 설정을 스프링 부트에서 자동화했지만, 내부에서 어떤 기술이 사용되고 있는지 명확히 알 수 없어 혼란스러움.스프링 부트의 원리 탐구: 시간을 들여 스프링 부트가 실제로 어떤 기능을 사용하는지 탐구하게 됨. 이를 통해 스프링 부트가 스프링 프레임워크의 자동 구성을 통해 어떻게 동작하는지 이해..
이일민 (토비) 소개경력: 30년 경력의 개발자 및 기술 컨설턴트로, 다양한 도메인에서 활동.스프링 경력: 2004년부터 스프링 프레임워크 실무 적용, 2016년부터 스프링 부트를 메인 개발 기술로 사용.저서: "토비의 스프링 3.0", "토비의 스프링 3.1" 저자.한국 스프링 사용자 모임(KSUG): 2007년 설립하여 활동.기술 소통 활동: 유튜브 채널에서 라이브 코딩과 인터뷰 진행, 디스코드 채널을 통해 개발자들과 소통.
1. 스프링 부트의 철학과 기본 개념스프링 부트란?: 스프링 부트는 스프링 프레임워크를 기반으로 한 빠른 애플리케이션 개발을 위한 도구입니다. 복잡한 설정 없이 독립 실행형 애플리케이션을 쉽게 만들 수 있도록 돕습니다.강한 주장 (Opinionated): 스프링 부트는 필요한 기술과 설정을 미리 제공하여 빠른 개발을 가능하게 하지만, 필요한 경우 이를 커스터마이징할 수 있습니다.2. 자동 구성(Auto-Configuration)자동 구성의 핵심: 스프링 부트는 자동 구성 기능을 통해 개발자가 별도로 설정하지 않아도 필요한 라이브러리와 빈을 자동으로 등록합니다. 이를 통해 개발자는 비즈니스 로직에 집중할 수 있습니다.조건부 자동 구성: @Conditional 애노테이션을 활용하여 특정 조건에서만..