2024/12 48

Spring Boot - @EnableAutoConfiguration의 동작 원리 / @ComponentScan의 동작 원리

@SpringBootApplication 어노테이션은- @SpringBootConfiguration- @EnableAutoConfiguration- @ComponentScan을 결합한 것이라고 했다. 이제 EnableAutoConfiguration을 알아보자.- @SpringBootConfiguration 의 경우에는 Web 하고는 관련이 없었다.Spring Web MVC 에서 중요한 건 FrontController, HandlerMapping, ViewResolver 등즉, Web에서 사용할 수 있는 미리 만들어져 있는 클래스들을 메모리(Spring Container)에 올려야 한다.그런 애들을 어떻게 올리냐, @EnableAutoConfiguration 을 통해서 올린다. 자동으로 환경 구성을 할 수..

Spring Boot - Application 실행하기 / Spring Boot 동작 원리 / Spring Boot의 Annotation / @SpringBootConfiguration 의 상세 원리

프로젝트 생성시 지정한 Package에"프로젝트이름(Artifact) + Application" 형태의 자바 어플리케이션이 만들어진다. 이번에는 IntelliJ 에서 진행해보고자 한다. 나는 분명 Artifact 에 HelloBoot 라고 입력했는데, 만들어진 main class의 이름을 보면,HelloBootApplication 이라고 나와있다. 일단, 이렇게 어플리케이션 open을 하고나면은 Java version check 부터 해보자. 확인했으니 이제 run 도 해보자.run 해보고 나서 웹에서도 확인해보자.그리고 뭔가 만들어놓은게 없으니 만들어야 한다.Controller, templates/index.html 을 만들어주자. Spring Boot 애플리케이션의 동작 원리는 다양한 구성 요소가 유..

Spring Boot - 개발환경 설정 / 개발 툴 / Spring Initializr 초기화 활용 /

OpenJDK 17버전 다운로드 후에 폴더 생성해서 넣어주고 내 PC - 우클릭 후 속성 - 고급 시스템 설정 - 환경 변수 - 시스템 변수에서 JAVA_HOME 설정을 해줘야 한다. 그런데, 지난번에 Java 공부를 하면서, 이미 설정을 했었는데 그때는 JDK 11 버전이었다.어쨌든, 이번에는 17이고 폴더 위치가 다르니까 옮겨주자.그리고나서 Path 도 변경을 해줘야 한다.JAVA_HOME 설정을 변경해주고 나서 밑에 내려보면 Path 도 찾을 수 있다.그리고 Path는 JAVA_HOME 의 bin 으로 잡아주자. 제대로 설정이 되었는지 확인까지 완료!Spring 개발 tool 로는, intellij, sts(eclipse), 전자정부 eclipse, vs code 가 있다.spring.io 라는 사..

Spring Boot - 기본값과 구성 규칙에 대한 Spring Boot의 고유한 접근 방식

Spring Boot의 **기본값(Default Values)**과 **구성 규칙(Configuration Rules)**에 대한 고유한 접근 방식은 **"설정보다 관례(Convention over Configuration)"**라는 철학에 기반하고 있어. 이 접근 방식은 개발자가 최소한의 설정으로도 애플리케이션을 빠르게 실행하고 동작시킬 수 있도록 돕는 것이 핵심이야.아래에서 Spring Boot의 기본값과 구성 규칙을 단계적으로 상세히 설명할게.1. Spring Boot의 기본값(Default Values)Spring Boot는 많은 기능에 대해 합리적인 기본값을 제공해.이 기본값은 대부분의 애플리케이션에서 공통적으로 사용될 만한 값으로 설정되어 있어, 개발자가 초기 설정에 많은 시간을 들이지 않아도..

Spring Boot - Spring Boot 소개 / 변천사에 대한 간단한 이해 / Spring Framework /

spring boot가 뭐야? 소개를 좀 해줄 수 있어? 개발자 공부를 이제 막 시작한 입문자라고 생각하고 대답을 해 Spring Boot는 자바(Java)로 웹 애플리케이션이나 백엔드 서버를 빠르고 쉽게 개발할 수 있도록 도와주는 프레임워크(framework)야.1. 프레임워크란?프레임워크는 "요리 레시피" 같은 거야. 만약 어떤 요리를 처음 만들어본다고 생각해 보자. 어디서부터 시작해야 할지 모르겠고, 잘못하면 요리가 엉망이 될 수 있지?프레임워크는 그런 과정을 쉽게 만들어주는 틀이야.Spring Boot는 자바로 개발을 시작할 때 필요한 기본적인 구조와 기능을 제공해줘.2. Spring Boot가 왜 만들어졌을까?원래는 Spring Framework라는 걸 많이 썼어.그런데 Spring Framew..

CI/CD - 마무리

디지털 비즈니스는 점점 더 복잡해지고 더 빨라지고 있습니다. 이러한 속도에 적응하기 위해서 인프라가 코드화되면서 코드를 통한 개발과 배포의 통합과 자동화는 CI/CD 라는 이름으로 개발자의 필수 기술 셋이 됐습니다.- 인프라가 코드화가 되었다 --> Cloud- 코드를 통한 개발과 배포 --> Cloud- 통합과 자동화CI/CD! 그래서 Docker, Linux, Cloud, CI/CD Pipeline, GitLab 을 통한 학습을 했다. Docker를 이용해서 애플리케이션을 패키징 할 수 있습니다. 애플리케이션을 위한 라이브러리, 빌드 시스템, 런타임, 코드 뿐만 아니라 운영체제에서 제공하는 PID, USER, Volume, IPC, Network 까지 함께 패키징 할 수 있습니다. 이를 통해서 어디에..

CI/CD - 협업 상황에서의 CI/CD 파이프라인 설계와 구축 (ft. Slack) - (3) Pipeline에 예외조건 설정 / Slack 연동과 CI/CD 이벤트 메시지 전송

개발자가 feature branch를 만들고 feature branch 에 대한 Merge Request를 하고 승인을 하면파이프라인이 작동해서 새로 배포되는 것까지 확인을 했다.그런데, feature branch 를 push를 하게 될 경우에 GitLab은 새로운 코드의 변경 사항을 확인하고feature branch에 대해서도 파이프라인을 작동시켜버렸다.결과적으로 아직 검증이 끝나지 않은 상태에서 서비스가 업데이트가 되어버린 것이다.이 경우에는 feature branch의 어떤 변화에 대해서는 CI/CD 파이프라인이 작동하지 말아라라는 예외 조건을 줘야 한다.예외조건을 설정하는 것을 보자.--> CI/CD Pipeline를 수정해보면 해결 가능하다. 해당 job 이 main 에서만 실행되도록 조건을 걸..

CI/CD - 협업 상황에서의 CI/CD 파이프라인 설계와 구축 (ft. Slack) - (2) branch / merge request

push를 했더니 에러가 떴다.그러니까 push라는건, 그냥 막 밀어넣겠다는건데,그게 아니라 merge request를 해서 main branch에 변화를 주어야 한다.그럴려면 branch를 생성했었어야 하고, 그 branch에서 코드를 개발해야 한다는 걸 의미한다고 생각한다.그래야 나중에 merge를 요청하지 않을까. MR (Merge Request)우선, branch를 새로 뻗고 기능 개발을 한 뒤에 MR 을 하기 전에,아까 push 하려고 commit 했던 걸 없애버려야 한다.git reset --hard HEAD~1git reset --hard HEAD~1 명령어는 Git에서 이전 커밋 상태로 되돌리고, 현재 작업 중인 파일 변경 사항과 스테이징된 모든 변경 사항까지 모두 삭제하는 강력한 명령어입..

CI/CD - 협업 상황에서의 CI/CD 파이프라인 설계와 구축 (ft. Slack) - (1) group

지금까지는 CI/CD 파이프라인 설계하고 구축하는 걸 했지만 '혼자' 작업하는 상황이었다.그런데 현실에서는 함께 일하는 상황일 것. 그러면, Group, project, user, permission 설정이 필요하다.그러니까 Merge Request와 Approve 설정이 있을 것.+Slack을 이용한 CI/CD 모니터링, Slack 연동과 CI/CD 이벤트 메시지 전송을 해볼 것.어찌됐든 지금까지 한 것들은 '혼자' 작업하고 있는 상황이었다보니 간단한 CI/CD 파이프라인을 구축했었다.하지만 실제 협업할 때는 여러 가지 상황들, 여러 조건들이 필요하다. 실제로 서비스 중인 어떤 Main Branch 가 있다고 해보자.개발자가 뭔가를 개발할 때, Main Branch를 가지고 바로 개발/적용을 하면 위험..