이 영역을 누르면 첫 페이지로 이동
개발다이어리 블로그의 첫 페이지로 이동

개발다이어리

페이지 맨 위로 올라가기

개발다이어리

저만의 개발일지를 만들어가는 공간입니다.

분류 전체보기

  • 개발다이어리
컨트롤러 테스트 시 Unauthorized(401), Forbidden(403)이 발생하는 이유

컨트롤러 테스트 시 Unauthorized(401), Forbidden(403)이 발생하는 이유

2024.03.30
스프링부트와 코틀린을 사용해서 API테스트 코드를 만들고있는데 계속 알 수 없는 이유로 403에러가 발생하기 시작했다. API에는 어떠한 검증 로직이 없었기 때문에 도무지 이해가 되지 않아서 헬스체크 api를 만들어서 해당 api의 테스트코드를 만들어보았다. 이번에는 401이 발생하기 시작했다. 뭐지?? 이리저리 검색하다보니 원인은 스프링 시큐리티였다. 나는 컨트롤러만 테스트할 계획이었기 때문에 @WebMvcTest를 사용해서 테스트코드를 만들었는데 이 어노테이션과 스프링 시큐리티와의 상관성 때문에 발생한 문제였다. 먼저 내 코드를 살펴보자 @RestController class JwtTokenController( private val jwtTokenUtil: JwtTokenUtil ) { @PostMa..
1월 회고

1월 회고

2024.02.05
23년을 마무리하면서 1년의 회고를 작성할려고 생각했을 때 가장 먼저 드는 생각이 ‘나 1년동안 뭐했지..?’ 였다. 그렇다보니 내가 원하는 만큼의 회고를 작성하지 못하게 되는 아쉬움이 있어서 24년도는 한 달 회고를 작성해보고자 한다. 회고를 위한 카테고리를 나눠서 카테고리별로 내용을 정리해볼려고 한다. 회사 개인공부 취미 생활 다음 달 목표 이 4개의 카테고리를 중점으로 회고를 작성해보고자 한다. 회사 회사에서는 자잘한 업무들과 크게 2가지 업무를 하고있는데 오래된 서버를 새로 구성하는 작업 새로 시작하는 프로젝트 1. 오래된 서버 리뉴얼 기존에 존재하는 아주 오래된 서버가 하나 있다. 거의 회사 초기에 만들어져서 아주 작은 수정들만 있고 유지되고있는 서버이다. 워낙 오래된 서버다보니 레거시도 너무많..
@Transactional 어노테이션 알아보기[1]

@Transactional 어노테이션 알아보기[1]

2023.02.18
들어가기에 앞서 스프링은 선언적 트랜잭션인 @Transactional를 통해서 트랜잭션을 사용해야 하는 많은 코드들에 청량함을 부여했다. @Transactional이 어떤방식으로 동작하는지를 알지 못해도 사용할 수 있을정도로 쉽게 사용할 수 있지만 사용할 때 주의해야 할 특징들과 주의 사항들이 몇 가지 존재한다. @Transactional 사용방법 @Transactional을 사용하는 방법은 트랜잭션을 적용하고자 하는 클래스 또는 메소드에 해당 어노테이션을 선언해주면 된다. class BasicService { @Transactional fun tx() { logInfo("call tx") val txActive = TransactionSynchronizationManager.isActualTransac..
스프링과 데이터베이스[2] - 트랜잭션 사용

스프링과 데이터베이스[2] - 트랜잭션 사용

2022.11.09
들어가기에 앞서 데이터베이스를 다루면서 트랜잭션은 절대적으로 놓쳐서는 안되는 중요한 요소이다. 개발자가 직접 트랜잭션 코드를 모두 작성해서 사용하면 반복되는 코드도 많아지고 자칫하면 실수가 발생할 수도 있다. 지금의 스프링은 트랜잭션을 아주 간단하고 편하게 사용할 수 있도록 설정되어있고 개발자는 간단하게 사용하기만 하면 되는 환경이 되었다. 여기서는 트랜잭션을 직접 사용할려면 어떻게 해야하는지와 스프링이 이러한 불편함을 어떻게 해결하고 지금은 얼마나 편해졌는지를 알아보도록 하자. 트랜잭션의 개념 트랜잭션은 어떤 로직의 수행이 모두 이루어지거나 모두 이루어지지 않도록 해주는 것이다. 특정 로직이 수행되었는데 중간에 에러가 발생해서 종료되더라도 수행된 부분까지는 데이터를 저장하는 것이 아니라 해당 로직이 실..
스프링과 데이터베이스[1] - JDBC와 커넥션 풀

스프링과 데이터베이스[1] - JDBC와 커넥션 풀

2022.11.08
들어가기에 앞서 개발자라면 데이터베이스는 절대 피해갈 수 없는 반드시 겪어야 하는 과정일 것이다. 일반적으로 개발을 할 때 애플리케이션과 데이터베이스가 어떻게 연결되고 데이터베이스와의 연결을 어떻게 관리하며 데이터베이스가 필요한 요청이 들어왔을 때 어떻게 처리되는지를 제대로 이해하고 사용하는 것이 좋을 것이다. 사실 지금은 스프링 부트를 사용하면 아주 간단한 조작만으로도 데이터베이스와의 연결이 가능하고 요청을 처리할 수 있다. 그렇기 때문에 의식적으로 어떤 방식으로 동작하는지를 이해하고 사용하는 것이 더욱 중요하다고 할 수 있다. JDBC 데이터베이스는 종류가 굉장히 다양하다. 가장 많이 사용하는 RDBS만 보더라도 MySQL, Oracle, MSSQL 등 이미 유명한 데이터베이스들이 잔뜩 있다. 문제는..
git 반복되는 컨플릭트 해결하기

git 반복되는 컨플릭트 해결하기

2022.10.27
들어가기에 앞서 혼자서 깃을 사용하는거라면 크게 문제될 것이 없겠지만 다른 사람과 협엽을 하는거라면 컨플릭트에 대한 문제를 생각하지 않을 수가 없다. 물론 컨플릭트가 발생해도 커뮤니케이션을 통해서 어렵지 않게 해결할 수 있겠지만 이상하리만큼 너무 자주 발생하면 여러 부분에서 마이너스가 될 수 밖에 없다. 깃을 사용하면서 컨플릭트가 나는 이유와 주의해야할 부분들을 살펴보자. 컨플릭트 이유 깃에서 컨플릭트가 나는 이유는 간단하게 말하면 서로 다른 커밋이 같은 내용을 바라보고 있기 때문이다. 깃은 모든 기준을 커밋ID로 판단한다. 내가 작성한 2개의 커밋이라도 이 커밋이 서로 다른 브랜치에서 온 커밋이고 같은 내용을 바라보고 있다면 컨플릭트는 발생할 것이다. 이렇게만 설명하면 음.. 그렇지 라고 생각하고 끝날..
git 현재커밋과 이전커밋 합치기

git 현재커밋과 이전커밋 합치기

2022.10.26
들어가기에 앞서 git을 사용하다보면 의도치 않은 커밋이 생기기 마련이다. 예를 들면 특정 기능을 완료하고 커밋을 했는데 다시 살펴보니 자잘한 오타가 있어서 오타를 수정하는 커밋을 작성해야 하는 경우가 있을 수도 있다. 이런 경우에 그냥 커밋을 하나 더 생성해도 되겠지만 그렇게하면 커밋내용이 깔끔하지 못할 수도 있기 때문에 오타를 수정하고 커밋을 한 뒤에 바로 직전에 했던 커밋과 합쳐버리는 방법을 사용하면 커밋하나로 깔끔하게 정리 할 수 있다. 원치않은 커밋 합치기 원치않은 커밋을 합치는 방법은 2가지를 생각해 볼 수 있다. git reset git rebase -i git reset reset을 사용하면 가장 최근 커밋의 내용으로 이동한다. 커밋을 하고 아무 수정도 하지 않은 상태라면 최근에 올린 커밋..
git 공부하기(4)_깃허브 연결하기

git 공부하기(4)_깃허브 연결하기

2022.09.05
들어가기에 앞서 깃을 제대로 익히기전에 깃허브를 먼저 사용하게 되면 깃과 깃허브를 제대로 구분하지 못할수도 있다. 요즘은 IDE도 너무 쉽고 편하게 잘 되있어서 몇번의 클릭으로 깃허브도 쉽게 연결하기 때문에 더더욱 구분하기 어려울 수도 있다. 깃과 깃허브는 분명하게 다른 것이다. 코드를 관리해주는 시스템이 깃이고 이 소스를 다른사람과 함께 볼 수 있고 로컬 내장이 아닌 원격으로 관리할 수 있게 해주는 것이 깃허브이다. 깃허브를 사용하기 위해서는 내가 사용하고 있는 깃과 깃허브를 연결해서 사용해야한다. 기존에 사용하고 있던 깃을 깃허브에 연결하기 기존에 git을 사용하고 있었다면 바로 깃허브를 연결하면 되지만 아직 git을 사용하지 않고 있다면 [https://solidbasics.tistory.com/5..
git 공부하기(3)_브랜치 사용하기

git 공부하기(3)_브랜치 사용하기

2022.09.02
들어가기에 앞서 브랜치는 협업을 하기위한 시작과도 같은 개념이다. 서로의 공간을 나눠서 작업할 수 있게 만들어주는 장치이다. 같은 프로젝트의 코드를 수정하더라도 서로 전혀다른 공간에서 작업을 하는 것이다. 일종의 평행세계를 만드는 것과 같은 개념이다. 그렇기 때문에 서로 다른 사람들이 같은 프로젝트의 코드를 수정하더라도 수정된 코드는 나한테만 보이고 다른사람한테는 보이지 않게 된다. git명령어를 입력하는 작업은 CLI에서 이루어진다. 이것은 명령어를 작성하고 실행시킬때는 편리하지만 전체 내역을 한 눈에 확인하기는 쉽지 않다. 이 시간에는 git의 작업내역을 한 눈에 볼 수있는 툴을 사용해볼려고 한다. git의 작업내역을 GUI로 확인 할 수 있도록 만든 툴이 여러개 있는데 그 중에서도 Sourcetre..
git 공부하기(2)_기본 사용방법

git 공부하기(2)_기본 사용방법

2022.09.02
들어가기에 앞서 우선 명확히 해야할 것이 있다. 이제는 개발할 때 git이 빠질 수 없는 중요한 요소중 하나로 작용하고있지만 제대로 모르고 사용하는 경우도 많다. 단적인 예로 git과 github를 구분하지 못하는 경우가 있다. 확실하게 말하자면 둘은 전혀 다른 존재이다. git을 사용해서 데이터를 쌓는 것은 로컬에만 저장하는 것이라고 생각하면 된다. 로컬에서 내가 만든 프로젝트와 같은 폴더에 .git이라는 것이 생성되고 이 안에 기록이 되는 것이다. 그렇기 때문에 .git이 삭제된다면 그 동안 저장한 git의 내용이 모두 사라지게 될 것이다. github는 이런 git의 내용을 원격으로 저장할 수 있도록 만들어진 페이지이다. 로컬에만 저장되있던 것을 github라는 공간에 저장시키는 것이다. 그리고 이..
git 공부하기(1)_설치 및 설정

git 공부하기(1)_설치 및 설정

2022.09.02
들어가기에 앞서 git을 처음 설치하는 방법은 window와 mac이 조금 다르다. window는 사이트에 들어가서 git을 받은 후 설치하면 되지만 mac은 터미널의 brew를 이용해서 설치해야 한다. git 설치 https://git-scm.com/downloads 페이지에 들어가서 다운받으면 된다. 받고 설치하는건 충분히 할 수 있으리라 믿어 의심치 않는다. git 설정 git을 설치했다면 내가 올릴 git의 username과 email을 등록해야 한다. 윈도우 : git bash 맥 : 터미널 을 이용해서 작업하면 된다. git config --global user.name "이름" git config --global user.email "이메일" config는 설정을 한다는 의미이고, --glo..
[코틀린] 함수 사용하기

[코틀린] 함수 사용하기

2022.08.30
들어가기에 앞서 코틀린과 자바는 함수를 사용하는 방법이 조금 차이가 있다. 비슷하지만 분명한 차이점들이 존재하기 때문에 코틀린스러운 코드를 위해서 코틀린에서 함수를 다루는 다양한 방법을 익혀보자. 함수 선언과 반환 기본적으로 가지고있는 몇 가지 규칙이 있다. public을 선언하지 않아도 기본적으로 public으로 정의하고 있다. 필요시에 private등으로 선언 할 수 있다. 아무것도 반환하지 않는(자바에서의 void)타입을 Unit이라고 부른다. 반환타입을 지정하지 않으면 자동으로 Unit으로 지정된다. 함수 선언은 함수 이름앞에 fun을 붙이면서 시작한다. 간단한 함수 선언 코드를 보면 위의 설명을 한 번에 이해할 수 있을 것이다. fun study(a: Int, b: Int): Int { if(a..
  • 최신
    • 1
    • 2
    • 3
    • 4
    • ···
    • 6
  • 다음

정보

개발다이어리 블로그의 첫 페이지로 이동

개발다이어리

  • 개발다이어리의 첫 페이지로 이동

검색

메뉴

  • 홈
  • Github
  • 방명록

나의 외부 링크

카테고리

  • 분류 전체보기 (66)
    • Spring (19)
      • MVC (7)
      • Boot (3)
      • Core (8)
      • Security (1)
    • Java (1)
    • 네트워크 (7)
    • JPA (6)
    • IntelliJ (2)
    • Database (1)
      • h2 (1)
      • postgreSQL (0)
    • 토이 프로젝트 (5)
      • 여행일지작성 (5)
    • 에러모음 (7)
    • 테스트코드 (2)
    • Git (8)
    • Nginx (2)
    • AWS (1)
    • 책 리뷰 (1)
    • Kotlin (2)
    • 회고 (1)
      • 24년도 회고 (1)
    • API문서 (0)

최근 글

인기 글

댓글

공지사항

아카이브

태그

  • http 헤더
  • HTTP
  • HTTP상태코드
  • JPA
  • 연관관계 매핑
  • 테스트코드 실행안됨
  • 네트워크 #TCP #IP #인터넷 통신
  • 단방향 매핑

정보

ssung의 개발다이어리

개발다이어리

ssung

블로그 구독하기

  • 구독하기
  • RSS 피드

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. © ssung. Designed by Fraccino.

티스토리툴바