It's going to be one day 🍀

안녕하세요! 매일 매일 공부하려고 노력하는 백엔드 개발자 지망생의 공부 흔적입니다.

Back-End/Spring 14

[Spring] 테스트 코드 개념

HTTP 통신에서 쿠키/세션을 활용하는 이유 - HTTP 통신은 한번 연결했다가 끊어지면 저장된 내용이 사라짐(connectionless, stateless). 이것을 보완하기 위해 쿠키 또는 세션을 사용함. 인증에 사용되는 정보 - 쿠키 : 클라이언트(브라우저) 로컬에 저장되는 키와 값이 들어있는 작은 데이터 파일 -> 브라우저가 종료되어도 인증이 유지된다는 특징이 있음. - 세션 : https://interconnection.tistory.com/74 쿠키와 세션 개념 노션 페이지(아래 내용과 동일) 개요 쿠키와 세션은 개발자 말고도 인터넷 사용자라면 누구나 많이 들어본 단어입니다. 하지만 개념에 대해서는 많은 사람들이 헷갈려 하기에 쉽고 간단하게 정 interconnection.tistory.com..

Back-End/Spring 2024.03.20

[Spring] 스프링 시큐리티 블로그 만들기

스프링 시큐리티 스프링 시큐리티(Spring security)는 스프링 기반의 애플리케이션 보안(인증, 인가, 권한)을 담당하는 스프링의 하위 프레임워크임. 인증, 권한 부여, 접근 제어, 암호화, 세션관리 등 다양한 보안 기능을 제공함. 인증(Authentication) : 사용자의 신원을 확인하는 과정 인가(Authorization) : 사이트의 특정 부분에 접근할 수 있는지 권한을 확인하여 접근을 제어하는 과정 스프링 시큐리티를 사용하면 보안 관련 옵션을 제공받을 수 있고 어노테이션 설정만으로 CSRF 공격, 세션고정 공격 등 개발자가 보안 관련 개발을 해야 하는 부담을 크게 줄여준다. - CSRF 공격 : 사용자의 권한을 가지고 특정 동작을 수행하도록 유도하는 공격 - 세션 고정 공격 : 사용자의..

Back-End/Spring 2024.03.19

[Spring] 필터와 인터셉터

필터와 인터셉터의 흐름 클라이언트의 요청이 처리되는 순서 : HTTP 요청 → 필터 → 인터셉터 → Controller → 인터셉터 → 필터 → 응답 -> 클라이언트의 요청을 필터가 먼저 처리하고 인터셉터가 그 다음에 처리함을 알 수 있음. 필터 스프링의 Dispatcher Servlet에 요청이 전달되기 전/후에 실행됨. WAS(서블릿 컨테이너)에서 실행되므로 스프링의 범위 밖에서 처리가 된다는 특징이 있음. 필터를 사용하기 위해서는 Filter 인터페이스를 구현해야함. public interface Filter { public default void init(FilterConfig filterConfig) throws ServletException {} public void doFilter(Servl..

Back-End/Spring 2024.03.18

[Spring] Thymeleaf를 이용해서 블로그 화면 구성하기

DispatcherServlet의 처리 과정 1. HTTP 요청이 들어오면, 2. HandlerMapping을 통해 적합한 컨트롤러와 메소드를 찾고, 3. 컨트롤러로 위임할 핸들러 어댑터를 찾아서 실행함. 4. 핸들러 어댑터가 컨트롤러로 요청을 위임하고, 5. 컨트롤러에는 -> service -> repositry ... 개발자가 구현한 로직에 대한 결과를 모델(ModelAndView)로 가져옴. 6. View 정보가 있을 경우, DispatcherServlet이 적절한 VeiwResolver를 찾아 호출함. 7. ViewResolver는 View를 찾아서 반환해줌. 8. 해당 View는 전달받은 model값으로 화면 랜더링을 하고, 9. HTTP 응답을 (HTML로) 반환함. @Controller @R..

Back-End/Spring 2024.03.13

[Spring] JPA로 CRUD 블로그 만들기 실습 정리

오늘은 JPA로 CRUD를 진행하며 블로그 만들기 실습을 진행했다. 수요일부터 비슷한 내용을 계속 반복하니까 드디어 비로소 좀 이해가 된 것 같다. 아직 완벽하게 이해하진 못했지만, 계속 복습하면 완벽하게 익힐 수 있을 거라구 생각한다.. 1단계 : 프로젝트 새로 생성하기 (의존성 추가하기) 먼저 새로운 프로젝트를 생성했다. 화면에 보이는 의존성들을 추가해주었다. 2단계 : 엔티티 구성하기 JPA로 쿼리를 작성하고 데이터베이스와 연결해주었다. create table if not exists article ( id BIGINT AUTO_INCREMENT primary key, title varchar(255) not null, content varchar(255) not null ); INSERT INTO..

Back-End/Spring 2024.03.12

[Spring] API와 REST API/MyBatis 블로그 만들기 실습 정리

API : (Application Programming Interface) : 프로그램간에 상호작용하기 위한 매개체 API는 클라이언트의 요청을 서버에 잘 전달하고, 서버의 결과물을 클라이언트에게 잘 돌려주는 역할을 한다, -> HTTP 프로토콜을 사용하여 클라이언트와 서버 간의 통신을 하기 위한 인터페이스 REST API : 이해하기 쉬운 URL로 설계를 한 API 장점) - URL만 보고도 무슨 행동을 하는 API인지 명확하게 알 수 있다. - 상태가 없다는 특징이 있어서 클라이언트와 서버의 역할이 명확하게 분리된다. - HTTP 표준을 사용하는 모든 플랫폼에서 사용할 수 있다. 단점) - GET, POST와 같은 방식의 개수에 제한이 있다. REST API를 사용하는 방법 규칙1 : URL에는 동사..

Back-End/Spring 2024.03.11

[spring] 강의 중 개념 정리 (외부)

spring의 기본 역할 1) @RestController, @Controller, @Service, @Repository, @Component, @Bean... 이런 어노테이션을 달아놓은 클래스들에 대해서는 spring이 대신 new 해서 만들어줄 것이다. 이때 범위를 알려주는 것 : 컴포넌트 스캔 2) 1번을 통해 만들어놓은 인스턴스들을 필요한 사람이 손들어서 요청하면 내가 전달해줄 것이다. DI - @Autowired, 생성자를 통해 선언을 하거나, setter method를 통해 선언하면 spring이 해당 인스턴스(=빈)을 찾아서 꽂아준다. 실습 코드로 예를 들어보면, -> HiController에서 HiService를 사용하겠다. @RestController public class HiCont..

Back-End/Spring 2024.03.08

[Spring] MyBatis 실습 / JPA 개념 (외부)

MyBatis 실습 MyBatis란? : 자바의 관계형 데이터베이스 프로그래밍을 좀 더 쉽게 할 수 있게 도와주는 개발 프레임워크. 복잡한 jdbc보다 사용하기에 더 깔끔하다. JPA : 자바에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스 인터페이스이므로 실제 사용을 위해서는 ORM 프레임워크를 추가로 선택해야함. ex) hibernate hibernate : JPA 인터페이스를 구현한 구현체이자 자바용 ORM 프레임워크. 내부적으로는 JDBC API를 사용한다. 하이버네이트의 목표는 자바 객체를 통해 데이터베이스 종류에 상관없이 데이터베이스를 자유자재로 사용할 수 있게 하는것이다. 엔티티 엔티티(Entity)는 데이터베이스의 테이블과 매핑되는 객체를 말한다. 데이터베이스의 테이블과 직접 연..

Back-End/Spring 2024.03.07

[Spring] Docker, JPA 기초 실습 (외부)

Docker 명령어 docker-compose up -d : 실행 시작 docker-compose down : 실행 종료 docker-compose ps : 상태 표시 docker logs :container_name : container_name의 로그 보기 WorkBench 사용 11802로 만드려는데 (도커랑 연결) 도저히 안됨 - 다시 깔아봤음 & 재부팅 해봤음 & MySQL 자체를 싹 지우고 다시 해봤음 안됨!!!! - my.ini 건드려봤음. 내용 함부로 건드렸다가 아예 실행안되서 다시 지웠다 깔음... - windows 11 home은 이미 wsl2 강제 사용중이라 도커 환경설정에서 체크 안풀어지는 듯 - 예상으로는 아마 내 윈도우가 전체 권한을 가지고 있지 않거나(?) 엄청 타이트한 보안환..

Back-End/Spring 2024.03.06