본문 바로가기

웹 개발/스프링

(15)
[스프링 부트 심화] AOP, Transaction 0. 개요 - AOP 이해하기 - 스프링 예외처리 - DB 트랜잭션 1. 회원 별 사용 시간 측정하기 - 관리자만 사용시간을 조회 - 사용시간의 기준 설정 : 1) 페이지에 머문 시간 -> 동작이 없을 경우 X, 2) 서버 사용시간 -> API 수행시간을 총합 - 사용시간 측정 방법 : 응답을 보낸 시간 - 요청이 들어온 시간 - 구현 방법 : (IntelliJ가 제공하는 임시 연습 코드 File > New > Scratch File) class Scratch { public static void main(String[] args) { // 측정 시작 시간 long startTime = System.currentTimeMillis(); // 함수 수행 long output = sumFromOneTo(1_..
[스프링 부트 심화] JPA 0. 개요 - 백엔드 개발자에게 DB를 다루는 능력은 매우매우 중요합니다. - JPA : 영속성 컨텍스트, 연관관계 - Spring Data JPA : 쿼리 메소드, 페이지 정렬 - 폴더 기능 추가하기 1. JPA 이해 ORM이란? (Object-Relational Mapping) : Object : "객체"지향언어 (자바, 파이썬) - 웹 서버에서 사용 Relational : "관계형" 데이터베이스 (H2, ORACLE, MySQL) - DB에서 사용 Object와 Relational 사이에서 번역을 해주는 것을 ORM 이라고 합니다. 웹 서버를 개발하는 백엔드 개발자와 DB를 관리하는 DBA로 역할이 나뉜 규모가 큰 회사도 있습니다 - ORM 없이도 웹 서버 개발을 할 수 있습니다. 이전에 Repos..
[스프링 부트 심화] 테스트 프레임워크 0. 개요 테스트의 필요성 : 개발은 어려우며 소프트웨어는 예상치 못한 결과(버그)를 냅니다. 버그는 소스 코드나 설계 과정에서의 오류에의해 발생합니다. 버그는 : - 사용자에게 불편함을 줌 : 일부 기능 작동 X, 의도와 다르게 동작, 전체 기능 동작X - 회사에 악영향 : 매출감소, 신뢰도 감소, 개인유출 가능성 - 개발자의 주말 없는 삶, 휴가 없는 삶, 저녁 없는 삶을 선사 버그를 (최대한 많이) 줄이는 법 : - 블랙 박스 테스팅 : 웹 서비스 사용자 누구나 테스트를 진행. 단, 기능이 증가할 수록 테스트의 범위 증가, 테스트 퀄리티의 문제(QA) - 개발자 테스트 : 직접 본인이 작성한 코드를 검증하기위해 테스트 코드를 작성합니다. 빠르고 정확한 테스트 가능(예상동작 VS 실제동작), 테스트 ..
[스프링 부트 심화] 스프링 시큐리티 - 로그인, 회원가입 구현 0. 웹의 인증 및 인가의 개념 - 인증 (Authentication) : 사용자의 신원을 확인하는 행위 - 인가 (Authorization) : 사용자의 권한을 확인하는 행위 예를들어, 회사 출입을 위해 출입증을 확인하는 것은 인증입니다. 반면 회사 건물 내 접근 권한 관리를 인가라고 합니다. 웹 에서 인증 및 인가는 다음과 같습니다. - 인증 : 로그인 아이디, 패스워드 - 인가 : 사용 권한 관리 - 회원 별 랭킹 웹 서비스는 HTTP 통신을 합니다. HTTP는 상태를 저장하지 않는 "Stateless" 특성으로 인해 사용자를 구분할 수 없습니다. HTTP의 상태는 기억하지 않는 특성으로 인해 서버는 받게 된 요청이 같은 클라이언트에서 온 것인지 구분할 수 없습니다. 따라서 웹 서비스는 인증과 인가..
[스프링 부트 심화] 스프링 시큐리티 0. 일단 우선 구현하기 - build.gradle에 스프링 시큐리티 dependency 추가 : // 스프링 시큐리티 implementation 'org.springframework.boot:spring-boot-starter-security' - src > main > java > com.example > security > WebSecurityConfig @Configuration @EnableWebSecurity // 스프링 Security 지원을 가능하게 함 public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exc..
[스프링 부트 심화] HttpEntity, ResponseEntity, HttpStatus 0. HttpEntity란 HttpEntity는 헤더와 비디로 이루어진 HTTP response, requesst 엔터티를 대표한다. Java.lang.Object
[스프링] 스프링 프레임 워크 재이해 0. 스프링 프레임워크란? The Spring Framework provides a comprehensive programming and configuration model for modern Java-based enterprise applications - on any kind of deployment platform. - Enterprise applications(기업용 애플리케이션) 개발 편의성 제공 : - 기업용 애플리케이션의 특성 : 신뢰성, 서버의 안정성, 데이터 관리가 중요 (막대한 양의 데이터 관리, 동시접속, 일관성) - 스프링의 핵심 요소는? : 기업의 팀들이 비즈니스 로직에 집중하도록 돕습니다. A key element of Spring is infrastructural support..
[스프링] 스프링 핵심 2 - Annotation 0. Annotation, 어노테이션이란 Annotation은 JEE5부터 새로 추가된 문법 요소로 사전적으로 "주석"이란 의미를 지니고 있다. 의미대로 자바 코드에서 주석처럼 달아 특별한 의미를 부여한다. "@"를 사용하며 "At"이라 읽는다. 1. Annotation 등장 배경 기존 자바 웹 어플리케이션들은 선언적 프로그래밍 방식을 사용한다. "선언적"은 프로그램의 전체와 각 레이어 별로 구성, 설정값들을 외부 XML 설정 파일에 명시하는 방식을 의미한다. 변경될 수 있는 데이터들을 최대한 외부 설정 파일로 분리하기 때문에 만약 변경하는 요구사항이 들어온 경우에도 컴파일 없이도 쉽게 적용할 수 있었다. 이를 통해 '유연성'이란 장점을 얻었으나 프로그램 자성을 위해 매번 많은 설정파일을 작성해야 함으로..