
스프링 강의 1일차 😀 먼저 IntelliJ를 설치해준다. https://www.jetbrains.com/idea/download/?section=windows 나는 밑으로 조금 내리면 있는 무료버전을 다운로드 받았다. jdk와 java는 설치되어 있었기에 따로

김영한님의 '스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술'을 듣고 적은 글입니다.웹 개발 방법에는 크게 3가지가 있다.정적 컨텐츠MVC와 템플릿 엔진API➀ 정적 컨텐츠정적 컨텐츠 :서버에서 하는 것 없이 파일을 웹브라우저로 바로 내려준다.

김영한님의 '스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술'을 듣고 적은 글입니다.데이터 : 회원ID, 이름기능 : 회원 등록, 조회아직 데이터 저장소가 선정되지 않음(가상의 시나리오)컨트롤러 : 웹 MVC의 컨트롤러 역할서비스 : 비즈니스

김영한님의 '스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술'을 듣고 적은 글입니다.src > main > java > repository 밑에 MemberService.java 파일을 만들어 준다.기존에는 회원 서비스가 메모리 회원 리포지토리

김영한님의 '스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술'을 듣고 적은 글입니다.지금까지 멤버 서비스. 리포지토리 제작했다. 서비스를 통해 가입하고 리포지토리를 통해 저장했다. 회원 컨트롤러가 회원 서비스와 회원 리포지토리를 사용할 수 있도

김영한님의 '스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술'을 듣고 적은 글입니다.먼저 H2 database를 설치해준다.https://www.h2database.com설치해주고 난 뒤 콘솔창을 띄운다. 그리고 h2 database가

김영한님의 '스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술'을 듣고 적은 글입니다.스프링 JDBC Templaqte는 순수 JDBC와 동일한 환경설정을 하면 된다. 스프링 JDBC Template과 MyBatis같은 라이브러리는 JDBC AP

김영한님의 '스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술'을 듣고 적은 글입니다.JDBC -> JDBC TEMPLATE 로 옮겨져 오면서 반복적인 코드를 줄이긴 했으나 SQL은 결국 개발자가 작성해야했다. 하지만 JPA를 사용하면 SQL 쿼

김영한님의 '스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술'을 듣고 적은 글입니다.스프링 부트와 JPA만 사용해도 개발 생산성이 많이 증가하고, 개발 코드도 줄어듭니다. 여기에 스프링 데이터 JPA를 사용하면 리포지토리에 구현 클래스 없이 인

김영한님의 '스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술'을 듣고 적은 글입니다.AOP가 필요한 상황 ➡️ 모든 메소드의 호출 시간을 측정하고 싶다면 ?원래였다면 메소드마다 일일히 start, finish 타임을 측정해야했다. 이렇게 말이다

서기...(는 아니고) 스프링이 등장하기 전 EJB 라는 자바 기술이 존재했다. 기업환경의 시스템을 구현하기 위한 서버측 컴포넌트 모델이다. 즉, EJB는 애플리케이션의 업무 로직을 가지고 있는 서버 애플리케이션이다. EJB 사양은 Java EE의 자바 API 중 하

김영한 님의 '스프링 핵심 원리 - 기본편' 을 수강하고 적은 글입니다.앞서 프로젝트 생성한 것처럼 똑같이 https://start.spring.io 로 들어가 스프링 프로젝트를 생성하고 IntelliJ에서 임포트시켜준다.회원회원 가입 및 조회 가능회원 등급은

김영한 님의 '스프링 핵심 원리 - 기본편' 을 수강하고 적은 글입니다. ✔️ 새로운 할인 정책으로 바꿔보자 기존에는 VIP 회원에게만 무조건 1000원을 할인해줬다. 하지만 VIP의 구매 금액의 10%를 할인해주기로 했다. discount > RateDiscount

김영한 님의 '스프링 핵심 원리 - 기본편' 을 수강하고 적은 글입니다.스프링 컨테이너는이 코드를 통해 생성된다.pplicationContext 를 스프링 컨테이너라고 하며 인터페이스이다. 스프링 컨테이너는 XML을 기반으로 만들 수 있고, 애노테이션 기반의 자바 설정

김영한 님의 '스프링 핵심 원리 - 기본편' 을 수강하고 적은 글입니다.스프링은 기업용 온라인 서비스 기술을 지원하기 위해 탄생했다. 대부분 스프링 애플리케이션은 웹 애플리케이션이다. 웹 애플리케이션은 보통 여러 고객이 동시에 요청을 한다.우리가 만들었던 스프링없는 순

김영한 님의 '스프링 핵심 원리 - 기본편' 을 수강하고 적은 글입니다.지금까지 스프링 빈을 등록하기 위해 @Bean을 통해 설정 정보에 직접 등록할 스프링 빈을 나열했다. 예제에서는 비록 몇개가 안되었지만, 수많은 스프링 빈을 일일히 등록한다면 귀찮고 설정 정보도 커

김영한 님의 '스프링 핵심 원리 - 기본편' 을 수강하고 적은 글입니다.생성자 주입수정자 주입필드 주입일반 메서드 주입생성자를 통해 의존관계를 주입받는 방법이다. 생성자 호출 시점에 딱 한번만 호출되는 것이 보장된다. 여태 우리가 써왔던 방법이다 !!생성자가 딱 한개만

김영한 님의 '스프링 핵심 원리 - 기본편' 을 수강하고 적은 글입니다.데이터베이스 커넥션 풀이나, 네트워크 소켓처럼 애플리케이션 시작 시점에 필요한 연결을 미리 해두고 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면, 객체의 초기화와 종료 작업이 필요

김영한 님의 '스프링 핵심 원리 - 기본편' 을 수강하고 적은 글입니다.스코프 : 빈이 존재할 수 있는 범위싱글톤 : 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프프로토타입 : 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까

김영한 님의 '스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술'을 듣고 적은 글입니다. 웹은 인터넷을 통해 서로 연결된 웹 페이지들을 의미한다. HTML로 작성되어 웹 페이지를 검색하고 브라우징 할 수 있는 기술이다. 우리는 HTTP 메시지에 모든 것을 전송할 수 있

김영한 님의 '스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술'을 듣고 적은 글입니다.앞서 계속 사용했던 스프링 부트 스타터 사이트로 이동해 프로젝트를 생성한다. 이때 Packaging을 War로 설정해야 한다. Spring Web, Lombok을 추가해주자.그리고

김영한 님의 '스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술'을 듣고 적은 글입니다.먼저 Member, MemberRepository 클래스를 만들어준다. memberRepository는 싱글톤 패턴을 적용했기에 생성자를 private 접근자로 막아둔다. 그리고 테

김영한 님의 '스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술'을 듣고 적은 글입니다.프론트 컨트롤러 전에는 각 컨트롤러마다 중복된 부분이 존재했다. 그래서 우리는 컨트롤러 호출 전 수문장 역할을 하는 게 있으면 좋을 것 같다는 말을 언급했다. 프론트 컨트롤러 도입을

김영한 님의 '스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술'을 듣고 적은 글입니다.기존에 우리가 만들었던 FrontController 구조와 유사하다.FrontController -> DispacherServlethandlerMappingMap -> Handler

김영한 님의 '스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술'을 듣고 적은 글입니다.운영 시스템에서는 System.out.println() 같은 시스템 콘솔을 사용해 필요한 정보를 출력하지 않고 별도의 로깅 라이브러리를 사용해 로그를 출력한다. 세상엔 수많은 로그

김영한 님의 '스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술'을 듣고 적은 글입니다.타임리프는 순수 HTML 파일을 웹 브라우저에서 열어도 내용을 확인할 수 있고, 서버를 통해 뷰 템플릿을 거치면 동적으로 변경된 결과를 확인할 수 있다. 이렇게 순수 HTML을 그대

김영한 님의 '스프링 MVC 2편 - 백엔드 웹 개발 핵심 기술'을 듣고 적은 글입니다.서버 사이드 HTML 렌더링 (SSR)네츄럴 템플릿스프링 통합 지원서버 사이드 HTML 렌더링 (SSR)타임리프는 백엔드 서버에서 HTML을 동적으로 렌더링하는 용도로 사용네츄럴 템

김영한 님의 '스프링 MVC 2편 - 백엔드 웹 개발 핵심 기술'을 듣고 적은 글입니다.타임리프는 스프링없이도 동작하지만, 스프링과 통합을 위한 다양한 기능을 편리하게 제공한다. 스프링의 SpringEL 문법 통합${@myBean.doSomething()}처럼 스프링

김영한 님의 '스프링 MVC 2편 - 백엔드 웹 개발 핵심 기술'을 듣고 적은 글입니다.화면에 보이는 문구 상품명이라는 단어를 모두 상품 이름으로 바꿔야 한다면 어떻게 해야할 까?여러 화면에 보이는 상품명, 가격 등 label에 있는 단어를 변경하려면 다음 화면들을 다

김영한 님의 '스프링 MVC 2편 - 백엔드 웹 개발 핵심 기술'을 듣고 적은 글입니다.우리가 앞서 만들었던 웹 애플리케이션에선 숫자를 문자로 작성하는 등 오류가 발생하면 오류 화면으로 바로 이동한다. 이렇게 되면 사용자는 처음부터 해당 폼으로 다시 이동해 입력해야 하

김영한 님의 '스프링 MVC 2편 - 백엔드 웹 개발 핵심 기술'을 듣고 적은 글입니다.Bean Validation은 특정 구현체가 아닌 기술 표준이다. 쉽게 이야기해서 애노테이션과 여러 인터페이스의 모음이다.Bean Validation을 구현한 기술 중 일반적으로 사

김영한 님의 '스프링 MVC 2편 - 백엔드 웹 개발 핵심 기술'을 듣고 적은 글입니다.도메인은 화면, UI, 기술 인프라 등등의 영역은 제외한 시스템이 구현해야 하는 핵심 비즈니스 업무 영역을 말한다. 웹 기술이 바뀌더라도 도메인은 그대로 유지할 수 있어야 한다. 이

김영한 님의 '스프링 MVC 2편 - 백엔드 웹 개발 핵심 기술'을 듣고 적은 글입니다.도메인은 화면, UI, 기술 인프라 등등의 영역은 제외한 시스템이 구현해야 하는 핵심 비즈니스 업무 영역을 말한다. 웹 기술이 바뀌더라도 도메인은 그대로 유지할 수 있어야 한다. 이

김영한 님의 '스프링 MVC 2편 - 백엔드 웹 개발 핵심 기술'을 듣고 적은 글입니다.도메인은 화면, UI, 기술 인프라 등등의 영역은 제외한 시스템이 구현해야 하는 핵심 비즈니스 업무 영역을 말한다. 웹 기술이 바뀌더라도 도메인은 그대로 유지할 수 있어야 한다. 이

김영한 님의 '스프링 MVC 2편 - 백엔드 웹 개발 핵심 기술'을 듣고 적은 글입니다.애플리케이션 여러 로직에서 공통으로 관심이 있는 것을 공통 관심사라고 한다. 이런 공통 관심사는 스프링의 AOP로도 해결할 수 있지만, 웹과 관련된 공통 관심사는 서블릿 필터 또는

김영한 님의 '스프링 MVC 2편 - 백엔드 웹 개발 핵심 기술'을 듣고 적은 글입니다.먼저 예외 처리를 위해 스프링 부트 스타터 사이트 로 들어가서 프로젝트를 생성한다.이때 Spring Web, Lombok, Thymeleaf, Validation을 추가해준다.서블릿

김영한 님의 '스프링 MVC 2편 - 백엔드 웹 개발 핵심 기술'을 듣고 적은 글입니다.HTML 페이지의 경우 앞의 글처럼 오류 페이지만 있으면 되지만 API의 경우에는 생각할 내용이 더 많다. API는 각 오류 상황에 맞는 오류 응답 스펙을 정하고 JSON으로 데이터

김영한 님의 '스프링 MVC 2편 - 백엔드 웹 개발 핵심 기술'을 듣고 적은 글입니다.먼저 스프링 부트 스타터로 이동해 스프링 프로젝트를 만들어준다. 이때 Spring Web, Lombok, Thymeleaf를 추가해주자.문자를 숫자로 변환하거나 숫자를 문자로 변환해

김영한 님의 '스프링 MVC 2편 - 백엔드 웹 개발 핵심 기술'을 듣고 적은 글입니다.HTML Form을 통한 파일 업로드를 이해하려면 먼저 폼을 전송하는 두가지 방식의 차이를 알아야한다.application/x-www-form-urlencodedmultipart/f

스프링 기반의 애플리케이션 보안을 담당하는 스프링 하위 프레임워크이다.Spring Security는 인증과 권환에 대한 부분을 Filter 흐름에 따라 처리한다.Filter는 Dispatcher Servlet으로 가기 전에 적용되기에 가장 먼저 URL 요청을 받지만,

코드를 실행하고 http://localhost8080/... 접근해야 하는 주소로 접근했는데 자꾸만 로그인창이 뜬다.이런 창이 뜰 때에는 이 주소에 대한 접근을 스프링 security가 막고 있는 것이기에 우리는 우리가 부여받은 password로 로그인하면 된

스프링을 이용해 쇼핑몰을 만들고 있는데 ModelMapper 라이브러리를 사용하게 되어서 정리해본다.ModelMapper는 어떤 객체에 있는 필드값을 원하는 객체에 자동으로 매핑시켜주는 라이브러리이다.주로 DTO와 같은 클래스로 데이터를 받은 후 원하는 클래스에 넣어줄

프로젝트에서 외부에 저장된 이미지를 사용하고자 할 때 WebMvcConfigurer 인터페이스를 구현해 설정할 수 있으며, 이때 addResourceHandlers() 메서드를 오버라이드 하여 정적 리소스를 웹 애플리케이션에서 제공할 수 있도록 핸들러를 추가해야 한다.

항상 IntelliJ 환경에서만 스프링을 사용했었는데 이번에 VSC를 사용해서 프로젝트를 진행해야 할 일이 생겨서 기록해두면 종종 참고하기에 좋을 것 같아서 남겨둔다. 1. VSC 설치하기 Visual Studio Code 홈페이지로 들어가 운영체제에 맞는 것으로

Spring Batch : 데이터 대용량 일괄처리 위해 사용 -> 초기 데이터 csv에서 불러와야해서 사용 SpringBatch그 자체로는 일 수행 못함. Configuration Bean을 통해 해당 Job이 실행될 경우에 어떤 일을 처리할 지 세팅할 뿐 실행을 위

먼저 나는 VSC를 사용했다.초기에 csv 파일을 여니 한글이 다 깨져서 인코딩 설정부터 해줬어야 했다.VSC에서 csv 파일을 열면 하단에 UTF-8이 보일 것이다.이를 클릭한 후Reopen with Encoding을 누른 후 EUC-KR로 설정해준 뒤 다시 창을 열

여러 클래스(객체)에 흩어져 있는 공통 관심사(Cross-Cutting Concern) 를 모듈화해서 코드 중복을 줄이고 유지보수를 쉽게 하는 프로그래밍ex) 로깅, 트랜잭션 관리, 보안 체크, 실행 시간 측정 등각 언어마다 AOP 지원 툴이 존재예를 들어, 시간을 측

스프링 빈에 대해 공부하다가 의존성 관리와 implements의 차이가 뭔지 궁금해졌다.그래서 이에 대해 정리해보고자 한다.우리는 인터페이스를 구현할 때 implements 키워드를 사용한다.만약 UserRepository가 인터페이스라면 그 안에 정의된 추상 메서드를

Filter, Interceptor, AOP는 모두 요청을 처리하는 과정과 관련이 있다. Filter, Interceptor, AOP가 적용된 스프링프레임워크가 외부에서 요청이 왔을 때 처리하는 흐름은 아래처럼 요약할 수 있다.Filter는 javax.servlet의

라이브러리와 프레임워크의 차이는 제어권에 있다.라이브러리는 내가 호출하는 코드로 개발자가 필요할 때 불러서 사용하는 도구이다.Math.random(), axios.get() 등과 같은 코드들은 개발자가 작성한 코드 안에서 라이브러리를 호출하는 것이다.정해진 틀 안에 개