전체 글 144

QuickStart 스프링부트_Chapter02_스프링 부트의 의존성 관리

1. 스프링 부트의 의존성 관리 스프링 부트를 구성하는 핵심 요소는 다음과 같다. 요소 기능 스타터(Starter) 스프링이 제공하는 특정 모듈을 사용할 수 있도록 관련된 라이브러리 의존성을 해결한다. 자동설정 (AutoConfiguration) 스타터를 통해 추가한 모듈을 사용할 수 있도록 관련된 빈 설정을 자동으로 처리해준다. 액추에이터(Actuator) 스프링 부트로 개발된 시스템을 모니터링할 수 있는 다양한 기능을 제공한다. 스프링 부트의 동작 원리를 이해할 수 있도록 위 세 가지 요소중 스타터와 자동설정을 중심으로 살펴본다. 1.1 스타터로 의존성 관리하기 스타터 이해하기 Spring boot은 build.gradle 또는 pom.xml에서 의존성을 관리한다. 그렇기에 새로운 의존성을 추가하기 ..

Spring 2022.12.07

웹 개발101_Chapter03_프론트엔드 개발

3.1 프론트엔드 개발 환경 설정 Noje.js 와 NPM Node.js로 인해 자바스크립트를 브라우저 밖에서 실행할 수 있게 되면서 자바스크립트로 된 node 서버를 이용할 수 있게 되었다. NPM은 Node Package Manager로 Node.js의 패키지 관리 시스템이다. 메이븐 리포지터리에서 라이브러리를 다운받는 것과 비슷 한 개념으로 우리는 npm을 이용해 npmjs에서 node.js 라이브러리를 설치할 수 있다. 브라우저의 작동 원리 다음은 클라이언트와 서버 통신을 나타낸 그림이다. HTML을 받은 브라우저는 파싱과 렌더링 단계를 거쳐 클라이언트에게 보여진다. 파싱 쉽게 말하자면 렌더링을 하기 위한 전처리 단계이다. 파싱 단계에서 브라우저가 하는 일은 크게 세 가지가 있다. 브라우저는 HT..

웹 개발 101 2022.12.07

오픈소스SW_Chapter10_배포관리와 태그

태그 배포는 정리된 최종 결과물을 만드는 과정이며, 깃은 정리된 커밋을 배포할 수 있도록 특수한 포인터를 제공하는데 이를 태그(tag)라 한다.태그 포인터로 최종 배포한의 커밋을 구별할 수 있으며, 커밋 해시 값을 기준으로 생성된다. 당연히 중복 생성은 불가하다. 태그는 다음과 같이 사용한다. git tag [옵션] [버전] -l , --list : 태그 목록을 볼 수 있다. -a : Annotated -d : 태그 삭제 해당 커밋이 삭제되는 것이 아니라 태그만 삭제됨. 당연히 해당 태그는 재사용할 수 있다. 태그는 추가 정보를 보유하는지 여부에 따라 두가지로 구분할 수 있다. Annotated Annotated 태그를 생성하려면 tag 명령어 뒤에 -a 옵션을 사용한다. 일반적으로 사용하는 태그 방법으..

오픈소스SW 2022.12.07

오픈소스SW_Chapter09_복귀

복귀 깃에서 코드 작업을 되돌리는 방법은 크게 reset과 revert 두 가지로 나뉜다. reset 커밋을 기준으로 이전 코드로 되돌리는 방법으로 기록한 커밋을 취소한다. 이전 코드로 복귀하려면 복귀 시점을 알려 주어야 한다. git log를 통해 해시 값을 확인 가능, HAED 포인터를 이용하여 상대적 위치를 지정할 수도 있음 git reset [옵션] 커밋ID soft : 스테이지 영역을 포함한 상태로 복원 별도의 메시지가 출력되지 않음 복귀 시점까지의 커밋 이력이 사라짐 단순히 HEAD 위치를 이동시킴 mixed : 옵션을 지정하지 않으면 기본값인 mixed로 자동 선택 스테이지 상태를 제외하고 복원하기 때문에 Unstaged 상태가 되어 메시지가 빨간색으로 표시됨. 즉, 커밋을 위해선 add 명..

오픈소스SW 2022.12.05

QuickStart 스프링부트_Chapter01_스프링 부트 시작하기

1.1 스프링 프레임워크 프레임워크란?? 프레임워크는 소프트웨어 관점에서 해석해보면 애플리케이션의 아키텍처에 해당하는 골격 코드라고 할 수 있다. 애플리케이션을 개발할 때 가장 중요한 것이 애플리케이션 전체 구조를 결정하는 아키텍처다. 그런데 이를 프레임워크로부터 빌려쓰면, 개발자는 비즌니스 로직 개발에만 집중할 수 있게된다. 1.2 스프링 부트의 등장 스프링 부트의 등장 배경 스프링 프레임워크가 처음 등장했을 때와는 달리 현재의 스프링은 엔터프라이즈 시스템 개발에 필요한 모든 분야를 지원하는 하나의 플랫폼으로 자리잡았다. 하지만 이렇게 다양한 프레임워크와 기술들을 지원하면서 동시에 개발자가 처리해야하는 설정도 많아지고 복잡해졌고, 이를 설정하는 데 많은 시간과 노력을 들일 수 밖에 없다. 이런 문제들을..

Spring 2022.12.01

토비의 Spring_chapter09_스프링 프로젝트 시작하기

스프링을 이용해 애플리케이션 프로젝트를 처음 구성할 때 알아야 할 기본적인 내용과 스프링 개발에 도움이 되는 개발 툴과 빌드 방법도 살펴볼 것이다. 스프링은 어떤 종류의 애플리케이션에도 잘 들어맞도록 매우 유연하게 설계된 범용 프레임워크다. 그래서 아키텍처의 종류나 프로젝트를 구성하는 방법에 대한 자유도가 높아 프로젝트 구성 방법이나 아키텍처 선택에 신중을 기해야한다. 9.1 자바 엔터프라이즈 플랫폼과 스프링 애플리케이션 스프링으로 만들 수 있는 애플리케이션의 종류에는 제한이 없지만, 주로 자바 엔터프라이즈 환경에서 동작하는 애플리케이션을 개발하는 목적으로 사용된다. 자바 엔터프라이즈 애플리케이션은 서버에서 동작하며 클라이언트의 요청을 받아서 그에 대한 작업을 수행하고 그 결과를 돌려주는 것이 기본적인 ..

Spring 2022.11.29

토비의 Spring_Chapter08_스프링이란 무엇인가?

8.1 스프링의 정의 스프링에 대한 정의는 "자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크"이다. 이 정의를 하나씩 풀어서 살펴보자. 애플리케이션 프레임워크 핵심 기술에 담긴 프로그래밍 모델을 일관되게 적용해서 엔터프라이즈 애플리케이션 전 계층과 전 영역에 전략과 기능을 제공해줌으로써 애플리케이션을 편리하게 개발하게 해주는 애플리케이션 프레임워크라는게 존재 목적이다. 애플리케이션 개발의 전 과정을 빠르고 편리하며 효율적으로 진행하는데 일차적인 목표를 두는 프레임워크 프레임워크는 이상적인 프로그래밍 모델을 추구하는 데 필요한 기반이 돼주는 코드이다. 경량급 EJB에서 불필요한 복잡함을 제거해 코드는 더 단순하고 개발 과정은 편리하게 만들었다. 만들어진 코드가 지원하는 기술수..

Spring 2022.11.27

웹 개발 101_Chapter02_백엔드 개발

Spring Boot 스프링 부트는 Stand-alone 프로덕션급의 스프링 기반 애플리케이션을 쉽게 구동할 수 있다. Stand-alone이란 이 애플리케이션을 실행하기 위해 여타 다른 애플리케이션이 필요하지 않다는 뜻이다. 예를 들어 내장형 서버, 시큐리티, 측정, 상태 점검, 외부 설정등이 있다. 또 스프링 부트는 개발자가 최소의 설정을 할 수 있도록 많은 부분을 자동으로 설정해준다. 스프링 프레임워크와 디스패쳐 서블릿 우리가 개발하는 자바 웹 애플리케이션은 대부분 자바 서블릿을 기반으로 한다. 서블릿 기반의 서버를 사용하기 위해 개발자는 Javax.servlet.http.HttpServlet을 상속받는 서브 클래스를 작성해야 한다. 그러면 서블릿 컨테이너가 서블릿 서브 클래스를 실행시킨다. 스프링..

웹 개발 101 2022.11.25

웹 개발101_Chapter01_개발을 시작하기 전에

배경지식 HTTP HTTP는 HyperText Transfer Protocol의 약자로, 애플리케이션 레벨의 네트워크 프로토콜이다. Transfer Protocol이란 통신을 하기 위한 규약(Protocol)이라는 뜻이며, HyperText란 다른 문서로 향하는 링크가 있는 텍스트이다. HTTP요청 HTTP 요청에는 송신자의 다양한 정보가 담겨 있다. 주목해야 할 부분은 요청 메서드이다. HTTP 요청에는 GET, POST, PUT, DELETE과 같은 메서드를 지정할 수 있다. 이러한 메서드는 호스트에게 지정한 리소스에 어떤 작업을 하고 싶은지 알려주는 역할을 한다. 하지만 실제 기능은 전적으로 API를 개발하는 개발자에게 달려 있다. 즉, HTTP 메서드는 '이런 기능을 위한 API에 사용하는게 좋다..

웹 개발 101 2022.11.18

토비의 Spring_Chapter07_스프링 핵심 기술의 응용

지금까지 살펴봤던 세 가지 기술을 애플리케이션 개발에 활용해서 새로운 기능을 만들어보고 이를 통해 스프링의 개발철학과 추구하는 가치, 스프링 사용자에게 요구되는 게 무엇인지를 살펴보겠다. 7.1 SQL과 DAO의 분리 UserDao에 이제 남은건 SQL을 DAO에서 분리하는 것이다. XML 설정을 이용한 분리 가장 손쉽게 생각해볼 수 있는 SQL 분리 방법은 SQL을 스프링의 XML 설정파일로 뺴내는 것이다. 스프링은 설정을 이용해 빈에 값을 주입해줄 수 있다. 개별 SQL 프로퍼티 방식 UserDaoJdb 클래스의 SQL문을 프로퍼티로 만들고 이를 XML에서 지정해보자. UserDaoJdbc.java 일부 public class UserDaoJdbc implements UserDao { private ..

Spring 2022.11.15