스프링/스프링 입문

이 글은 김영한 님의 Infrean 강의를 학습한 내용을 정리하여 작성합니다. AOP란 Aspect-Oriented Programming 의 약자로 관점 지향 프로그래밍이라 한다. 흩어진 Aspect들을 모아 모듈화 해주고 관심사 분리라는 개념을 가지며 객체지향 프로그래밍을 통해 더욱 객체지향적으로 만들어주는 기술이다. AOP는 여러 곳에서 쓰이는 공통 기능을 모듈화하고, 쓰이는 곳에 필요할 때 연결함으로써, 유지 보수 혹은 재사용에 용이하도록 프로그래밍 한다. AOP가 필요한 상황 모든 메소드의 호출 시간을 측정하고 싶다면? 공통 관심 사항 (cross-cutting concern) vs. 핵심 관심 사항 (core concern) 회원 가입 시간, 회원 조회 시간을 측정하고 싶다면? 예를 들어 Mem..
이 글은 김영한 님의 Infrean 강의를 학습한 내용을 정리하여 작성합니다. 스프링 JdbcTemplate 순수 Jdbc와 동일한 환경설정을 하면 된다. 스프링 JdbcTemplate과 MyBatis 같은 라이브러리는 JDBC API에서 본 반복 코드를 대부분 제거해준다. 하지만 SQL은 직접 작성해야 한다. 스프링 JdbcTemplate 회원 리포지토리 MemberRepository interface를 확장해 JdbcTemplateMemberRepository 클래스를 구현한다. JdbcTemplate을 사용하기 위해서는 위 코드처럼 클래스 내부에 JdbcTemplate을 선언해준다. 이때, JdbcTemplate은 이전 다른 코드들처럼 스프링으로부터 주입(Injection) 받을 수 없다. 따라서,..
이 글은 김영한 님의 Infrean 강의를 학습한 내용을 정리하여 작성합니다. 스프링 데이터 엑세스 H2 데이터베이스 설치 순수 Jdbc 스프링 JdbcTemplate JPA 스프링 데이터 JPA H2 데이터베이스 설치 개발이나 테스트 용도로 가볍고 편리한 DB, 웹 화면 제공 H2를 다운받고 실행시키면 최초의 데이터베이스 파일을 생성해야 한다. 데이터베이스 생성 방법 Jdbc:h2:~/test(최초 한번) ~/test.mv.db 파일 생성 확인 이후부터는 jdbc:h2:tcp://localhost/~/test 이렇게 접속 테이블 생성하기 테이블 관리를 위해 프로젝트 루트에 sql/ddl.sql 파일을 생성 위 내용을 실행하면 다음과 같이 MEMBER가 생성된다. 생성된 이후로는 다음과 같은 명령을 통해..
이 글은 김영한 님의 Infrean 강의를 학습한 내용을 정리하여 작성합니다. 회원 웹 기능 - 홈 화면 추가 회원 웹 기능 - 등록 회원 웹 기능 - 조회 회원 웹 기능 - 홈 화면 추가 홈 컨트롤러 추가 회원 관리용 홈 실행 결과 참고: 컨트롤러가 정적 파일보다 우선순위가 높다. 현재 이전에 생성한 index.html 정적 파일을 이미 존재하는 상태다. 그럼에도 불구하고 방금 생성한 home.html 결과 페이지가 출력되었다. 이러한 이유는 간단하다. 우리가 입력한 url을 내장 톰켓 서버가 확인한다. 그러면 톰켓 서버는 우선 스프링 컨테이너 내에 해당 url과 관련된 컨트롤러를 탐색한다. 만약 관련 컨트롤러가 존재하지 않는다면 resources/static 폴더 아래에 정적 파일을 탐색해준다. 회원..
이 글은 김영한 님의 Infrean 강의를 학습한 내용을 정리하여 작성합니다. 컴포넌트 스캔과 자동 의존관계 설정 자바 코드로 직접 스프링 빈 등록하기 컴포넌트 스캔과 의존관계 설정 회원 컨트롤러가 회원서비스와 회원 리포지토리를 사용할 수 있게 의존관계를 준비한다. 회원 컨트롤러에 의존관계 추가 @Controller 스프링 컨테이너에 해당 클래스 객체를 생성해 넣어둔다. 해당 객체는 스프링이 관리한다. 이를 스프링 컨테이너에서 스프링 빈이 관리된다고 표현한다. 위 이미지처럼 MemberService 객체를 new로 생성해 사용할 수 있다. 하지만, 여러 Controller들이 MemberService를 사용하게 될 것인데 굳이 여러 개의 인스턴스를 생성할 필요가 없다. 하나의 인스턴스를 공유해야 한다. ..
이 글은 김영한 님의 Infrean 강의를 학습한 내용을 정리하여 작성합니다. 비지니스 요구사항 정리 회원 도메인과 리포지토리 만들기 회원 리포지토리 테스트 케이스 작성 회원 서비스 개발 회원 서비스 테스트 비지니스 요구사항 정리 데이터: 회원ID, 이름 기능: 회원 등록, 조회 아직 데이터 저장소가 선정되지 않음(가상의 시나리오) 일반적인 웹 애플리케이션 계층 구조 컨트롤러: 웹 MVC 컨트롤러 역할 서비스: 핵심 비지니스 로직 구현 리포지토리: 데이터베이스에 접근, 도메인 객체를 DB에 저장하고 관리 도메인: 비지니스 도메인 객체, ex) 회원 주문, 쿠폰 등등 주로 데이터베이스에 저장하고 관리됨 클래스 의존관계 아직 데이터 저장소가 선정되지 않아서, 우선 인터페이스로 구현 클래스를 변경할 수 있도록..
이 글은 김영한 님의 Infrean 강의를 학습한 내용을 정리하여 작성합니다. 이제부터는 스프링 웹 개발 기초에 대해 알아본다. 웹 개발에는 크게 세 가지 방법이 존재한다. 정적 컨텐츠 MVC와 템플릿 엔진 API 정적 컨텐츠 정적 컨텐츠란 이전 우리가 간단한 예제로 Welcome Page를 만들어 본 것을 떠올리면 된다. 정적 웹 페이지(static web page), 플랫 페이지(flat page, 스테이셔너리 페이지(stationary page)는 저장된 그대로 사용자에게 전달되는 웹 페이지로서, [1] 이는 웹 애플리케이션에 의해 생성되는 동적 웹 페이지와 반대되는 용어이다. [2] 즉, 정적 웹 페이지는 모든 상황에서 모든 사용자에게 동일한 정보를 표시하며, 콘텐츠 타입이나 문서 언어의 협상(n..
이 글은 김영한 님의 Infrean 강의를 학습한 내용을 정리하여 작성합니다. 빌드하고 실행하기 빌드를 수행하고 실제 실행할 수 있는 파일을 생성해본다. 이때, 콘솔 창을 이용한다. 1. ./gradlew build 2. cd build/libs gradlew build 명령의 결과로 hello-spring-0.0.1-SNAPSHOT.jar 파일이 생성되었다. 이 파일을 실행시키려면 다음 명령어를 사용한다. 3. java -jar hello-spring-0.0.1-SNAPSHOT.jar hello-spring-0.0.1-SNAPSHOT.jar 파일을 java를 사용해 실행시켰다. 제대로 동작하는지 확인해보자. 보다시피 localhost:8080/hello 페이지가 정상적으로 동작하는 것을 확인할 수 있다..
이 글은 김영한 님의 Infrean 강의를 학습한 내용을 정리하여 작성합니다. 이전 글에서 localhost:8080으로 접속하면 Error 페이지를 보여주는 것을 확인할 수 있다. 이번 글에서는 Welcome 페이지를 생성해 보도록 한다. View 환경설정 Welcome Page 생성하기 Spring Boot는 resources/static 폴더 아래 위 이미지처럼 index.html 파일을 생성하면 자동으로 Welcome Page를 생성해준다. 위 이미지처럼 파일을 생성한 뒤 서버를 끄고 다시 실행시켜 본다. 보다시피 Welcome Page가 생성되었다. 문서 참조 이처럼 Spring Boot가 제공하는 기능은 매우 방대하다. 그래서 스스로 기능을 찾아보는 것이 매우 중요한데 방법은 다음과 같다. h..
이 글은 김영한 님의 Infrean 강의를 학습한 내용을 정리하여 작성합니다. 라이브러리 살펴보기 Gradle은 의존관계가 있는 라이브러리를 함께 다운로드 한다. 처음 spring project를 생성할 때 우리가 설정한 Dependencies가 기억날 것이다. 확인해보면 템플릿 엔진으로서 동작할 thymeleaf, spring web, 자동으로 추가된 test 세 가지만 존재한다. 하지만, 실제로 라이브러리를 확인해보면 다음과 같다. 우리가 가져온 라이브러리 이외에도 수많은 라이브러리들이 존재한다. 이러한 결과는 Gradle이 의존관계에 있는 모든 라이브러리들을 다운로드 하기 때문이다. Maven이나 Gradle과 같은 빌드 툴들은 의존관계에 있는 라이브러리들을 모두 관리해준다. IntelliJ 좌측 ..
개발자가 될 사람
'스프링/스프링 입문' 카테고리의 글 목록