이번주에는 Spring 프로젝트에서 서비스 계층 테스트를 어떻게 작성하는지와 @SpringBootTest 기반 통합 테스트와의 차이점을 실제로 작성한 테스트 코드를 기준으로 정리해보았습니다. 테스트를 단순한 동작 확인이 아닌, 로직 변경에 대비하기…
전체 18건의 글
Spring 미니 프로젝트 회고
이번주에는 지금까지 배운 Spring 프레임워크에 전반에 대한 내용을 기반으로, 간단한 커뮤니티 게시판을 구현하는 미니프로젝트를 진행했습니다. 총 3명이 한 팀이 되어 하루 대부분의 시간을 함께하며 기능 구현부터 테스트, 오류 수정까지 전 과정을…
웹 및 브라우저 보안 CSRF / CORS
오늘은 CSRF와 CORS에 대해 브라우저 보안 모델의 관점에서 체계적으로 정리했습니다. 이전에는 단편적인 지식만 보유하고 있었으나, 두 개념이 서로 다른 목적을 갖고 있다는 점을 명확하게 이해했습니다. 또한 Spring Security 설정 코드를…
Spring - Swagger(OpenAPI) 설정 및 Request Validation 적용하기
기존 API 문서는 Posman을 통해 생성하고 json으로 Export하여 저장하고있었습니다. API 문서화를 위해 Swagger(springdoc-openapi) 를 도입하고, 요청 값을 안정적으로 검증하기 위한 Request…
Spring - Spring Security + JWT 기반 인증으로 로그인 로직 개선하기
이번 주에는 저번에 작성했던 세션 기반 로그인 방식을 개선하여, JWT 기반 인증 방식으로 전환해보았습니다. 추가로 Spring Security를 이용하여 API 요청 단위로 사용자 인증 정보를 검증하도록 변경하였습니다. 또한 비밀번호를 암호화하여…
Spring - REST API 기본 구조 및 예외 처리 구현
오늘은 Spring을 이용하여 RESTful API를 설계하고, 컨트롤러에서의 HTTP 메서드 처리 방식과 ResponseEntity로 상태 코드를 반환하는 방법, 그리고 글로벌 예외 처리 구조를 정리해보았습니다. REST…
Spring - 세션을 이용하여 api 인증 구현하기
이번주는 Spring에서 로그인 처리와 간단한 CRUD를 처리할 수 있는 API를 작성해보았습니다. 저번에 Swing으로 작성했던 미니프로젝트를 Spring을 이용한 웹 서비스로 작성해보려고 합니다. 따로 회원 정보나 인증 부분이 없었기 때문에…
미니 프로젝트 리팩토링
![미니 프로젝트 리팩토링]()
Java Swing과 JDBC를 이용하여 ☕ 카페 재고 관리 프로그램을 만들었습니다. JDBC는 데이터베이스 연결과 트랜잭션, 자원 해제를 매번 직접 관리해야 하며, 이로 인해 데이터 접근 코드와 비즈니스 로직이 밀접하게 결합되는 단점이 있습니다.…
웹 프론트엔드 정리
![웹 프론트엔드 정리]()
이번 주에는 웹 프론트엔드의 기본적인 내용에 대해 공부하고, 기본적인 html, css, javacript를 이용하여 팀 소개, 개인 소개 페이지를 만들어보았습니다. netlify로 배포, firebase로 데이터 받기, 보여주기도 추가로…
JAVA - Maven, Mybatis, JPA
![JAVA - Maven, Mybatis, JPA]()
이번 주에는 Java 프로젝트에 데이터베이스를 연결하고, MyBatis와 JPA를 사용해보는 시간을 가졌습니다. MyBatis로 SQL을 직접 작성하며 데이터베이스와 상호작용하는 방식을 먼저 경험했고, 이후 JPA로 넘어가면서 데이터베이스 연결에…
데이터베이스 인덱스(Index) 정리 - MySQL 인덱스 실습
![데이터베이스 인덱스(Index) 정리 - MySQL 인덱스 실습]()
📌 인덱스란? 인덱스는 데이터베이스에서 데이터 검색 속도를 향상시키기 위한 자료구조입니다. 책의 뒷부분에 있는 색인처럼, 특정 데이터를 빠르게 찾을 수 있도록 도와주는 역할을 합니다. 인덱스가 없으면 데이터베이스는 원하는 데이터를 찾기 위해 테이블의…
MySQL 정리
![MySQL 정리]()
MySQL을 사용하면서 자주 찾아보게 되는 명령어들과 핵심 개념들을 정리해봤다. 권한 관리 데이터베이스 생성 및 조회 테이블 생성 및 관리 테이블 구조 변경 (ALTER) 데이터 삽입 (INSERT) 데이터 조회 (SELECT)…
GitHub Repository를 이용해서 비대면 스터디 운영하기
![GitHub Repository를 이용해서 비대면 스터디 운영하기]()
스터디 팀원으로 참여해 본 적은 많지만 주도적으로 운영해 본 적은 없던 것 같다. 이번에 멀티캠퍼스에서 스터디 이벤트를 열었는데, 대면 스터디가 대부분이었다. 비대면 학습을 진행하다보니 같은 반 수강생들과 교류할 기회가 부족해서 아쉬운 마음에…
Java의 Collections와 Stream
![Java의 Collections와 Stream]()
지금까지 웹개발을 하면서, 주로 JavaScript, PHP, Go 같은 언어를 사용해왔다. 이런 언어들은 슬라이스(slice)나 딕셔너리(dictionary)처럼 데이터를 다루기 편리한 문법을 기본으로 제공한다. 반면 Java는 배열을 선언하면…
IntelliJ(Community)로 Java 코드 작성하기
![IntelliJ(Community)로 Java 코드 작성하기]()
첫번째 TIL 글로 IntelliJ에서 패키지/클래스 생성법과, JAR 파일 만들고 실행하는 방법을 정리해보려고 한다. Java IDE로 Eclipse도 많이 쓰지만, IntelliJ를 설치하여 사용중이었기 때문에 수업에서 사용하지 않아도 그대로…
Gatsby 블로그 구축하기 (3) - 구글 검색에 블로그 노출하기
![Gatsby 블로그 구축하기 (3) - 구글 검색에 블로그 노출하기]()
블로그를 배포하고, 글을 몇 개 작성했다. 그리고 페이지 별 title 메타 태그 같은것도 설정해주었다. 하지만 아이디를 검색해보면, 내 블로그가 나오지 않고 전혀 다른 컨텐츠들이 노출된다. (여기 검색 된 인스타와 유튜브 계정은 다른 사람의 계정인…
Gatsby 블로그 구축하기 (2) - Utterances 연동해서 댓글란 만들기
![Gatsby 블로그 구축하기 (2) - Utterances 연동해서 댓글란 만들기]()
Utterances는 GitHub Issues 기반의 댓글 위젯으로, 별도의 서버를 구축할 필요 없이 깔끔하게 댓글 시스템을 붙일 수 있다. 댓글이 달리면 지정한 GitHub 저장소의 Issues에 등록되고, Issues에서 댓글을 관리할 수 있다.…
Gatsby 블로그 구축하기 (1) - Gatsby 프로젝트 생성
![Gatsby 블로그 구축하기 (1) - Gatsby 프로젝트 생성]()
Gatsby 소개와 선택한 이유 Gatsby는 React 기반의 정적 사이트 생성기(Static Site Generator, SSG)다. Next.js처럼 서버 사이드 렌더링을 지원하는 프레임워크도 있지만, Gatsby는 서버가 없고 정적 파일을…








