[Spring] 7. AOP
·
Backend/Spring
인프런 김영한의 스프링 입문을 듣고 작성한 글입니다  이제 마지막으로 AOP라는 것을 배우고 이 강의는 마무리 될 예정이다 일단 AOP가 뭘까?간단히 알아보겠다AOP(Aspect-Oriented Programming, 관점 지향 프로그래밍)은 핵심 비지니스 로직과 부가적인 관심사(ex. 로깅, 보안, 트랜잭션 관리 등)를 분리하여 코드의 재사용성과 유지보수성을 높이는 프로그래밍 기법이다실전에서 겪어보며 무엇인지 제대로 이해해보겠다 AOP가 필요한 상황모든 메소드의 호출 시간을 측정하고 싶다면?공통 관심 사항 vs 핵심 관심 사항?회원 가입 시간, 회원 조회 시간을 측정하고 싶다면? 우리는 코드에 직접 초를 재도록 설계해보겠다 @Transactional public long join(Member..
[Spring] 6. 스프링 DB 접근 기술
·
Backend/Spring
인프런 김영한의 스프링 입문을 듣고 작성한 글입니다  저번 강의에서는 메모리에 데이터를 저장하기 때문에 서버가 종료되면 사라지게된다데이터들이 사라지면 안되기에 데이터를 저장하는 데이터베이스에 대해서 배울 것이다 H2 데이터베이스 설치개발이나 테스트 용도로 가볍고 편리한 DB인 "H2 DB"를 사용해보겠다 설치를 했고 아래 명령어를 사용해서 권한을 부여하고chmod 755 h2.sh 다음 명령어로 실행하게 된다./h2.sh 그러면 이미지와 같이 하나의 사이트가 뜨게 된다 그리고 member 테이블을 만들어 줬다우리가 멤버 데이터를 id와 name을 받기 때문에 각각 만들었다  순수 JDBC과거에 사용했던 JDBC를 사용해, 과거에는 어떻게 사용했었는지 배워보겠다대충 과정만 이해하는 단계로 참고할 점만 따로..
[Spring] 5.회원 관리 예제 - 웹 MVC 개발
·
Backend/Spring
인프런 김영한의 스프링 입문을 듣고 작성한 글입니다 이번에는 memberController를 통해 회원을 등록하고, 조회하는 것을 만들어 보겠다 회원 웹 기능 - 홈 화면 추가package hello.hello_spring.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.GetMapping;@Controllerpublic class HomeController { @GetMapping public String home() { return "home"; }}홈 컨트롤러 하나를 만들고 실행시켜 봤다 잘 동작하는 것을 볼 수 있고참고할 점은 ..
[Spring] 4. 스프링 빈과 의존관계
·
Backend/Spring
인프런 김영한의 스프링 입문을 듣고 작성한 글입니다  멤버 컨트롤러가 멤버 서비스를 통해 회원가입하고, 데이터를 조회 할 수 있다 이런 관계를 의존 관계라고 한다우리는 회원 컨트롤러가 회원 서비스와 리포지토리를 사용할 수 있도록 의존관계를 준비 해보자  컴포넌트 스캔과 자동 의존관계 설정일단 들어가기 전에 컴포넌트 스캔과 자동 의존관계 설정이 뭘까?컴포넌트 스캔은 스프링이 특정 패키지를 탐색하며, 특정 어노테이션(여기서는 @Controller) 이 붙은 클래스를 자동으로 스프링 빈으로 등록하는 기능이다그럼 스프링 빈은 뭘까?스프링 빈은 스프링 컨테이너가 관리하는 객체를 의미한다new 키워드를 통해서 직접 생성하는 것이 아닌 스프링이 대신 생성하고 관리하는 객체를 의미한다예전에 helloController..
[Spring] 3. 회원 관리 예제 - 백앤드 개발
·
Backend/Spring
인프런 김영한의 스프링 입문을 듣고 작성한 글입니다 입문 강의이기에 복잡한 비지니스보단 전체적으로 알아보는 시간을 갖도록 하겠습니다 비지니스  요구사항 정리- 데이터: 회원ID, 이름- 기능: 회원 등록, 조회- 아직 데이터 저장소가 선정되지 않았다는 가상의 시나리오 (스프링의 특성을 알아보기 위해) 일반적인 웹 애플리케이션 계층 구조- 컨트롤러: 웹 MVC의 컨트롤러 역할- 서비스: 핵심 비즈니스 로직 구현 (ex. 회원ID가 중복이 안되다는 등)- 리포지토리: 데이터베이스에 접근, 도메인 객체를 DB에 저장하고 관리- 도메인: 비지니스 도메인 객체 (ex. 회원, 주문, 쿠폰 등등 주로 데이터베이스에 저장하고 관리됨) 우리도 위와 같이 일반적인 웹 애플리케이션 계층 구조를 따라 갈 것이다 클래스 의존..
[Spring] 2. 스프링 웹 개발 기초
·
Backend/Spring
인프런 김영한의 스프링 입문을 듣고 작성한 글입니다 웹을 개발한다는 것은 아래와 같이 3가지 방법이 있다첫번째는 Welcome page를 만들었던 것처럼 파일을 웹 브라우저에 내려주는 정적 컨텐츠두번째는 MVC와 템플릿을 이용해 동적으로 웹 브라우저에 내려주는 MVC와 템플릿 엔진세번째는 json 파일 방식으로 클라이언트에게 내려주는 API 이 세가지를 하나씩 살펴 보겠다 정적 컨텐츠 Spring Boot FeaturesGraceful shutdown is supported with all four embedded web servers (Jetty, Reactor Netty, Tomcat, and Undertow) and with both reactive and Servlet-based web appli..
[Spring] 1. 프로젝트 환경 설정
·
Backend/Spring
인프런 김영한의 스프링 입문을 듣고 작성한 글입니다 프로젝트 생성프로젝트를 생성하기 위해서 웹사이트(https://start.spring.io/) 하나를 이용한다환경 설정은 위와 같이 구성 했고 인텔리제이에서 build.gradle을 프로젝트로 생성하면 위와 같은 구조를 볼 수 있다또, gradle을 인텔리제이로 바꿔 자바 실행이 더 빠르게 구성했다  라이브러리 살펴보기처음엔 우리는 Spring web, thymeleaf만 라이브러리를 가져왔다하지만 gradle을 통해서 다운했기에 의존성이 있는 라이브러리들도 가져온다고 한다아 참 gradle이 뭔지도 모르고 그냥 받아드렸기 때문에 gradle에 대해서 약소하게나마 알아봤다gradle은 빌드 도구로, 쉽게 말해 프로젝트를 빌드(컴파일, 테스트, 패키징 등..