일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Enhanced Input System
- 프메
- Bootstrap4
- 마인크래프트뮤지컬
- Jinja2
- flask
- Express
- 파이썬서버
- JWT
- 정글사관학교
- 미니프로젝트
- 게임개발
- node
- R
- 카렌
- 알고풀자
- 언리얼
- 언리얼프로그래머
- EnhancedInput
- 스터디
- 레베카
- 으
- Unseen
- Ajax
- 디자드
- 데이터베이스
- 스마일게이트
- 프린세스메이커
- VUE
- 언리얼뮤지컬
- Today
- Total
목록JAVA, SPRING/스프링 부트와 AWS로 혼자 구현하는 웹서비스 (9)
Showing
*이동욱 저, 스프링부트와 aws로 혼자 구현하는 웹서비스를 학습하면서 작성한 포스팅입니다. 1. 스프링 시큐리티와 OAuth 스프링 시큐리티(Spring Security)는 막강한 인증과 인가(혹은 권한 부여) 기능을 가진 프레임워크이다. 사실상 스프링 기반의 애플리케이션에서는 보안을 위한 표준이라고 보면 된다. 인터셉터, 필터 기반의 보안 기능을 구현하는 것보다 스프링 시큐리티를 통해 구현하는 것을 적극적으로 권장하고 있다. 스프링 대부분 프로젝트들(Mvc, Data, Batch 등)처럼 확장성을 고려한 프레임워크이다 보니 다양한 요구사항을 손쉽게 추가하고 변경할 수 있다. 이런 쉬운 설정은 특히나 스프링 부트 1.5에서 2.0으로 넘어오면서 더욱 더 강력해졌다. 이번 장에서는 스프링 시큐리티와 OA..
*이동욱 저, 스프링부트와 aws로 혼자 구현하는 웹서비스를 학습하면서 작성한 포스팅입니다. 1. 구현 사항 2. 전체 조회 화면 만들기 Controller, Service, Repository 코드를 작성하도록 한다. (1) Repository 기존에 있던 PostsRepository 인터페이스에 쿼리를 추가한다. package com.jojo.book.springbootwebservice.domain.posts; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import java.util.List; public interface PostsRe..
1. 수정/조회 기능 제작 (1) PostsApiController package com.jojo.book.springbootwebservice.web; import com.jojo.book.springbootwebservice.service.posts.PostsService; import com.jojo.book.springbootwebservice.web.dto.PostsSaveRequestDto; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org...
*이동욱 저, 스프링부트와 aws로 혼자 구현하는 웹서비스를 학습하면서 작성한 포스팅입니다. 1. Spring 웹 계층 API를 만들기 위해 총 3개의 클래스가 필요하다. - Request 데이터를 받을 Dto - API 요청을 받을 Controller - 트랜잭션, 도메인 기능 간의 순서를 보장하는 Service (트랜잭션은 데이터베이스에서 데이터 조작 작업의 논리적인 단위를 나타내는 개념) DTO란... DTO는 "Data Transfer Object"의 약자, 데이터 전송 객체. 스프링 부트에서는 주로 DTO 패턴을 사용하여 데이터를 전달하고 관리하는 데 사용. DTO는 비즈니스 로직이나 도메인 로직을 포함하지 않고, 단순히 데이터를 전송하기 위한 목적으로 사용. 주로 데이터베이스로부터 데이터를 검..
*이동욱 저, 스프링부트와 aws로 혼자 구현하는 웹서비스를 학습하면서 작성한 포스팅입니다. 1. JpaRepository 생성 앞서 Posts 클래스 생성이 끝났으므로, Posts 클래스로 Database를 접근하게 해 줄 JpaRepository를 생성한다. JpaRepository와 DAO는 둘 다 데이터베이스(DB) 레이어에 접근하기 위한 접근자이다. JPA에선 Repository라고 부르며 인터페이스로 생성한다. 단순히 인터페이스를 생성 후, JpaRepository을 상속하면 기본적인 CRUD 메소드가 자동으로 생성된다. @Repository를 추가할 필요도 없다. 다만 주의할 점은 Entity 클래스와 기본 Entity Repository는 함께 위치해야 한다는 점이다. 둘은 아주 밀접하고,..
*이동욱 저, 스프링부트와 aws로 혼자 구현하는 웹서비스를 학습하면서 작성한 포스팅입니다. 1. build.gradle에 의존성 등록 implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'com.h2database:h2' dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' implementation 'org.springframework.boot:sprin..
*이동욱 저, 스프링부트와 aws로 혼자 구현하는 웹서비스를 학습하면서 작성한 포스팅입니다. 1. SQL 보다 객체 지향 개발 : JPA 관계형 데이터베이스를 이용하는 프로젝트에서 객체지향 프로그래밍에 더욱 집중하기 위해 JPA라는 자바 표준 ORM 기술을 쓸 수 있다. 이번 챕터에서는 JPA를 프로젝트에 적용해보도록 한다. 많은 자사 서비스 기업이 SpringBoot & JPA를 전사 표준으로 사용하고 있다. 2. 관계형 데이터베이스와 객체지향의 패러다임 불일치 현대의 웹 어플리케이션에서 관계형 데이터베이스(RDB, Relational Database)는 빠질 수 없는 요소. 객체를 관계형 데이터 베이스에서 관리하는 것이 무엇보다 중요하다. 관계형 데이터베이스가 계속해서 웹 서비스의 중심이 되면서 모든..
*이동욱 저, 스프링부트와 aws로 혼자 구현하는 웹서비스를 학습하면서 작성한 포스팅입니다. 1. 테스트 코드 큰 규모의 서비스에서 테스트 코드의 작성은 매우 중요한 기술이자 습관이다. (1) TDD vs 단위테스트 TDD는 테스트가 주도하는 개발이므로, 테스트 코드를 먼저 작성하는 것부터 시작한다. red : 항상 실패하는 테스트를 먼저 작성하고 Green : 테스트가 통과하는 프로덕션 코드를 작성하고 Refactor : 테스트가 통과하면 프로덕션 코드를 리팩토링 반면, 단위테스트는 TDD의 첫번쨰 단계인 기능 단위의 테스트 코드를 작성하는 것을 이야기한다. TDD와 달리 테스트 코드를 꼭 먼저 작성해야 하는 것도 아니고, 리팩토링도 포함되지 않는다. 순수하게 테스트 코드만 작성하는 것을 이야기 한다...
*이동욱 저, 스프링부트와 aws로 혼자 구현하는 웹서비스를 학습하면서 작성한 포스팅입니다. 1. 그레이들 프로젝트를 스프링 부트 프로젝트로 변경 buildscript { ext { springBootVersion = '2.1.9.RELEASE' } repositories { mavenCentral() jcenter() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") } } apply plugin: 'java' apply plugin: 'eclipse' apply plugin: 'org.springframework.boot' apply plugin: 'io.spring.d..