빌드 자동화 시스템
Web, API, REST, URI
Network, Client-Server, Web Server, Apache Tomcat
RFC 2616에서 규정된 Web에서 데이터를 주고 받는 프로토콜(통신규약)
Status Code는 사용자가 웹 서버에 요청을 보냈을 때, 응답으로 보내주는 숫자 코드이다.
Spring vs Spring Boot
자바 프로그래밍 언어 용 단위 테스트 프레임워크
반복되는 메소드를 Annotation을 사용해서 자동으로 작성해주는 java 라이브러리
Spring과 관련된 설정을 할 때 사용되는 파일
Model-View-Controller의 약자로, 소프트웨어 디자인 패턴 중 하나
@Controller, @???Mapping, @RequestMapping
동적 페이지 처리를 위한 템플릿 엔진, thymelef
요즘은 기본적인 html 파일 요청을 제외하고는 JSON 데이터를 요청하는 API를 통해 브라우저에서 html을 조작하여 반영하는 걸 선호한다.
JSON 데이터 구조를 처리해주는 라이브러리
Path Variable 방식, Query String 방식, form 태그 POST 방식
@ModelAttribute, @RequestBody
데이터 전송 및 이동을 위해 생성되는 객체
DB 교체를 손쉽게 만들어준 JDBC
Controller-Service-Repository
Spring의 특징은 DI(의존성 주입) 패턴을 사용하여 IoC(제어의 역전) 설계 원칙을 구현한다는 점이다.
DI를 사용하기 위해서는 객체 생성이 우선 되어야 했다. 이때 Spring 프레임워크가 필요한 객체를 생성하고 관리하는 역할을 대신 해준다.
Java ORM 기술의 대표적인 표준 명세
JPA에서 관리되는 클래스. 즉, 객체
Entity 객체를 효율적으로 쉽게 관리하기 위해 만들어진 공간
영속성 컨텍스트는 캐시를 통해 Entity 객체를 효율적으로 관리하고 있다.
Transient(비영속), Managed(영속), Detached(준영속), Removed(삭제)
spring boot의 jpa
JPA를 쉽게 사용할 수 있게 만들어놓은 모듈
Spring Data JPA에서는 시간에 대해서 자동으로 값을 넣어주는 기능인 JPA Auditing을 제공하고 있다.
Spring Data JPA에서는 메서드 이름으로 SQL을 생성할 수 있는 Query Methods 기능을 제공한다.
부가적이고 공통적인 기능들을 처리하는 기술 지원 Bean은 수동으로 등록하는게 좋다
인증(Authentication) vs 인가(Authorization)
쿠키 세션 인증 방식, 토큰 기반 인증 방식
쿠키와 세션 모두 HTTP에 상태 정보를 유지(Stateful)하기 위해 사용된다. 즉, 쿠키와 세션을 통해 서버에서는 클라이언트 별로 인증 및 인가를 할 수 있게 된다.
스프링에서 JWT 사용하는 방법
Spring Security라는 프레임워크에서 제공하는 비밀번호 암호화 기능을 사용해보자
Filter란 Web 애플리케이션에서 관리되는 영역으로 Client로 부터 오는 요청과 응답에 대해 최초/최종 단계의 위치이며 이를 통해 요청과 응답의 정보를 변경하거나 부가적인 기능을 추가할 수 있다.
'Spring Security' 프레임워크는 Spring 서버에 필요한 인증 및 인가를 위해 많은 기능을 제공해준다.
Spring Security 로그인 처리 과정(세션방식)을 이해해보자
Spring Security에 JWT를 적용하는 방법을 알아보자.
'일반 사용자'는 관리자 페이지에 접속이 인가되지 않아야 한다.
Spring에서는 null 확인 뿐 아니라 문자의 길이 측정과 같은 다른 검증 과정도 쉽게 처리할 수 있도록 Bean Validation을 제공하고 있다.
Spring에서는 서버에서 다른 서버로 간편하게 요청할 수 있도록 RestTemplate 기능을 제공하고 있다.
1:1 관계, N:1 관계, 1:N 관계, N:M 관계
JPA는 연관관계가 설정된 Entity의 정보를 바로 가져올지, 필요할 때 가져올지 정할 수 있다.
영속성 전이란 영속 상태의 Entity에서 수행되는 작업들이 연관된 Entity까지 전파되는 상황이다.
일정한 시간 간격 또는 일정한 시각에 특정 로직을 돌리기 위해 사용하는 것
Spring Data JPA에서 페이징 및 정렬 기능을 제공하기 때문에 손쉽게 페이징, 정렬을 구현할 수 있다.
OAuth는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준이다.
단위 테스트는 작은 단위로 쪼개서 각 단위가 정확하게 동작하는지를 검사하는 테스트 기법이다.
Mockito는 Mock 객체를 쉽게 만들 수 있는 방법 제공하는 Java용 오픈 소스 테스트 프레임워크이다.
통합 테스트(Integration Test)는 두 개 이상의 모듈이 연결된 상태를 테스트할 수 있다.
MockMvc는 웹 어플리케이션을 애플리케이션 서버에 배포하지 않고 테스트용 MVC환경을 만들어 요청 및 전송, 응답기능을 제공해주는 유틸리티 클래스다.
AOP는 Aspect Oriented Programming의 약자로 관점 지향 프로그래밍이라고 불린다. 관점 지향은 쉽게 말해 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화하겠다는 것이다.