YOONJI
article thumbnail
[Spring Intro] Section 07. AOP_AOP가 필요한 상황, AOP 적용
🖋️ study/spring 2023. 2. 2. 22:00

AOP가 필요한 상황 갑자기 악덕 상사가 나타나 요새 우리 프로그램에 문제가 있는 것 같다며 모든 메소드의 호출 시간을 측정해 보라고 한다. 난 메소드 1000개의 시작과 끝에 시간 측정 로직을 모두 심어야 한다. 머리에 큰일났다는 생각 뿐이다. 그렇게 열심히 수정해뒀더니, 상사가 다시 와서 초 단위로 측정하니 잘 안 나오네..라며 밀리세컨드 단위로 바꾸라고 한다. . . . 모든 메소드의 호출 시간을 측정하고 싶다면? 공통 관심 사항(cross-cutting concern) vs 핵심 관심 사항(core concern) 회원 가입 시간, 회원 조회 시간을 측정하고 싶다면? MemberService 회원 조회 시간 측정 추가 src/main/java/hello.hellospring/service/Memb..

article thumbnail
[Spring Intro] Section 06. 스프링 DB 접근 기술_JPA, 스프링 데이터 JPA
🖋️ study/spring 2023. 1. 30. 21:13

JPA JPA는 기존의 반복 코드는 물론이고, 기본적인 SQL도 JPA가 직접 만들어서 실행해준다. JPA를 사용하면, SQL과 데이터 중심의 설계에서 객체 중심의 설계로 패러다임을 전환을 할 수 있다. JPA를 사용하면 개발 생산성을 크게 높일 수 있다. build.gradle 파일에 JPA, h2 데이터베이스 관련 라이브러리 추가 dependencies { implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' //implementation 'org.springframework.boot:spring-boot-st..

article thumbnail
[Spring Intro] Section 06. 스프링 DB 접근 기술_순수 JDBC, 스프링 통합 테스트, 스프링 JDBC Template
🖋️ study/spring 2023. 1. 30. 04:40

순수 JDBC 환경 설정 # build.gradle 파일에 jdbc, h2 데이터베이스 관련 라이브러리 추가 // DB와 연동하기 위해 필요한 드라이버 implementation 'org.springframework.boot:spring-boot-starter-jdbc' // DB와 붙을 때 필요한 데이터베이스가 제공하는 클라이언트 runtimeOnly 'com.h2database:h2' # 스프링 부트 데이터베이스 연결 설정 추가 resources/application.properties spring.datasource.url=jdbc:h2:tcp://localhost/~/test spring.datasource.driver-class-name=org.h2.Driver spring.datasource...

article thumbnail
[Spring Intro] Section 06. 스프링 DB 접근 기술_H2 데이터베이스 설치
🖋️ study/spring 2023. 1. 29. 22:29

들어가기 전에 우리는 이전 포스팅에서 회원 정보를 메모리에 저장했기 때문에 서버를 껐다 켜면 데이터가 메모리에서 모두 사라졌다. 실무에서는 이런 일이 발생하면 안되기 때문에 데이터베이스를 통해 저장하고 관리해야 한다. 이를 위해 우선 가볍고 간단한 H2 데이터 베이스를 설치하고, 데이터베이스 SQL을 통해 애플리케이션 서버와 DB를 연결해 보자. 연결할 때 필요한 것이 바로 Jdbc라는 기술이며, 먼저 오래 전의 개발자들이 어떻게 개발했는지 순수한 Jdbc로 경험을 해 보고 중복을 제거하여 애플리케이션에서 DB로 SQL을 편하게 날릴 수 있는 스프링 Jdbc Template을 사용할 예정이다. 그리고 더 나아가서 SQL조차 개발자들이 직접 짜지 않고 JPA라는 기술을 통해 등록/수정/삭제 쿼리를 날릴 수..

article thumbnail
[Spring Intro] Section 02. 스프링 웹 개발 기초_정적 컨텐츠, MVC와 템플릿 엔진, API
🖋️ study/spring 2023. 1. 16. 13:02

스프링 웹 개발 방법 정적 컨텐츠 ; 파일을 그대로 웹브라우저에 내려주는 것 MVC와 템플릿 엔진 ; 서버에서 HTML을 프로그래밍해서 동적으로 내리는 것 API ; JSON이라는 데이터 구조 포맷으로 클라이언트에게 데이터를 전달하는 방식 정적 컨텐츠 # 정적 컨텐츠 기능 resources/static/hello-static.html 정적 컨텐츠 입니다. > hello-static.html 파일 생성 후 프로젝트 실행 localhost:8080/hello-static.html 접속 시 위와 같은 화면이 출력된다. # 정적 컨텐츠 동작 환경 > 웹 브라우저에서 localhost:8080/hello-static.html 접속 > 내장 톰켓 서버가 요청을 받아 Spring에게 전달 > Spring이 컨트롤러 ..

article thumbnail
[Spring Intro] Section 01. 라이브러리 살펴보기, View 환경설정, 빌드 및 실행
🖋️ study/spring 2023. 1. 16. 07:03

라이브러리 살펴보기 # 의존관계 **Gradle은 의존관계가 있는 라이브러리를 함께 다운로드 한다. 예전에는 웹 서버를 직접 서버에 설치하고 자바 코드를 밀어넣는 식으로 웹 서버와 개발 라이브러리가 완전히 분리되어 있었음 > 요즘에는 소스 라이브러리에서 웹서버를 내장(임베디드)하고 있기 때문에 자바 메인 메소드만 실행해도 웹 서버가 뜸 라이브러리 하나를 빌드해서 웹 서버에 올리면 끝나는 간단한 방식으로 개발하는 추세이다. # 라이브러리 - 스프링 부트 라이브러리 spring-boot-starter-web spring-boot-starter-tomcat: 톰캣 (웹 서버) spring-webmvc: 스프링 웹 MVC spring-boot-starter-thymeleaf: 타임리프 템플릿 엔진 (View) ..