개인 공부185 [Java] 빌드툴 (feat. Gradle) 🐘 Gradle 이미 우리는 Gradle을 잘 사용하고 있습니다! 하지만 정확하게 어떤 도구인지 알아보는 시간을 가져보겠습니다. 😋😋 자바를 통해서 코드를 작성한 뒤 실행하기 위해선 다음과 같은 과정을 거쳐야 합니다. 작성한 코드(*.java)를 javac 명령어로 바이트 코드로 변환한다. 변환된 코드(*.class)를 java 명령어로 실행시킨다. 매번 저런 과정들을 거치는 게 귀찮기 때문에 자동으로 빌드해 주고 실행시켜 주는 도구들이 출시되었습니다. Maven, Gradle 등이 출시되었고 요즘에는 Gradle이라는 도구를 가장 많이 사용합니다😎 🙋 설치하기 설치하는 방법은 어렵지 않지만 꼭 JDK 1.8 이상 버전이 미리 설치되어 있어야 합니다. java -version 명령어로 확인부터 합시다!.. 2023. 6. 5. [객체지향의 사실과 오해] 2장 : 이상한 나라의 객체 🧐 객체지향의 패러다임? 2장을 펼쳤을 때, 가장 먼저 눈에 들어오는 말은 패러다임이다. 패러다임이라는 말은 익숙한 듯 낯설다. 위키백과에는 패러다임은 다음과 같이 정의되어 있다. 패러다임(paradigm)은 어떤 한 시대 사람들의 견해나 사고를 근본적으로 규정하고 있는 테두리로서의 인식의 체계, 또는 사물에 대한 이론적인 틀이나 체계를 의미하는 개념이다. JPA(ORM)를 시작할 때 "객체지향 프로그래밍과 관계형 데이터베이스의 패러다임의 불일치를 해소하기 위한 기술"이라는 점을 가장 먼저 공부한다. 당시에는 단순하게 둘 사이의 차이를 해소시키는 것으로 이해하고 넘어갔지만 패러다임이 무엇인지 명확하게 이해가 가지 않는다. 그렇다면 패러다임을 어떻게 이해하면 좋을까? 나는 패러다임은 안경으로 이해했.. 2023. 6. 4. [Spring] 트랜잭션 사용 조심하기 😇 들어가기 앞서 로그인 실패 시 핸들링을 구현하면서 발생했던 트랜잭션으로 발생했던 이슈가 있어서 공유하고자 합니다. 트랜잭션에 대해서 추가적인 내용들은 따로 정리를 할 예정입니다. 🙋 트랜잭션이란? 하나의 작업의 단위를 트랜잭션이라고 합니다. 스프링에서는 트랜잭션을 편하게 사용할 수 있도록 AOP와 어노테이션 기반으로 동작합니다. 우리가 꼭 짚고 넘어가야 것은 트랜잭션은 기본적으로 상위 트랜잭션에 포함된다 입니다. 1️⃣ 로그인 실패 로그인 실패 핸들링은 다음과 같은 요구사항을 가집니다. 로그인 실패 시 로그인 실패 회수를 카운팅한다. 카운팅한 결과를 예외에 담아서 던진다. 코드는 다음과 같이 작성했습니다. 인증을 진행하다가 BadCredentialsException가 발생하면 핸들링 로직을 실행합니다.. 2023. 5. 29. TIL : Bean 컨테이너와 ComponentScan (22) 🎛️ ApplicationContext 스프링에서 핵심인 ApplicationContext는 Bean을 관리해준다. 싱글톤 레파지토리로도 불리는데 Bean을 싱글톤으로 관리해주기 때문이다. 우리가 작성한 설정 정보를 적용시키려면 @Configuration을 붙여준다. 여기에 싱글톤의 비밀이 들어있다. 설정 정보는 우리가 작성한 순수 자바 클래스가 빈으로 등록되는 것이 아니다. 작성한 자바 클래스를 상속받는 임의의 다른 클래스를 만들고 빈으로 등록한다. 여기서는 CGLIB라는 바이트코드 조작 라이브러리를 사용한다. CGLIB 라이브러리가 내부적으로 어떻게 구현되었는지는 모르겠지만, 빈이 존재하면 기존 인스턴스를 반환하고 아니라면 생성할 수 있도록하는 클래스로 변환될 것이다. 따라서 @Configuratio.. 2023. 5. 17. [Java] 백준 17265번 : 나의 인생에는 수학과 함께 https://www.acmicpc.net/problem/17265 17265번: 나의 인생에는 수학과 함께 세현이의 인생의 목표는 1분 1초 모든 순간 수학과 함께 살아가는 것이다. 그렇기 때문에 매일 수학을 생각하면서 살아가고 있다. 세현이는 밥을 먹을 때도 쌀알의 수를 계산하여 칼로리를 바로 www.acmicpc.net 💡 문제 풀이 그래프 탐색 문제이다. 범위가 작아서 백트래킹으로 구현했다. 전역적으로 연산자에 대해서 관리했다. 따라서, 연산자일 때 새롭게 연산자를 초기화해 주고, 연산자가 아니라면 기존의 연산자로 돌려주는 것이 핵심이다. ✔️ 느낀 점 자바로 푸니까 확실히 어렵지만 할만한 문제였다. 사실 int 형으로 변환할 때 parseInt를 쓰고 싶지 않아서 char형으로 갔는데 타입은 편.. 2023. 5. 17. [BackEnd] MapStruct 사용기 😋 MapStruct 사용기 객체 간의 간단한 매핑을 위해서 MapStruct를 도입한 이야기를 해보려고 합니다. 어떻게 사용하는지와 사용하고 어땠는지 적어보겠습니다. 🪄 MapStruct란? Java 기반의 객체 매핑 라이브러리입니다. 다음과 같은 특징을 가지고 있습니다. 컴파일 시점에 매핑 코드를 작성한다. 그래서 런타임 시 오버헤드가 없고 안전하다. 다른 매핑 라이브러리보다 빠르다. 어노테이션을 통해서 매핑을 개발자가 쉽게 제어할 수 있다. Lombok에 대한 의존성이 꼭 필요하다. 💡 MapStruct 사용법 예시에 사용될 DTO와 Entity는 다음과 같습니다. // DTO 1번 public class RequestDto { private String title; private String co.. 2023. 5. 13. 이전 1 2 3 4 5 6 ··· 31 다음