Software Engineering Blog

컴퓨터공학부 3학년 재학 중인 학생입니다. 백엔드를 주로 공부하며 금융 분야에 관심이 많습니다.

전체 글 24

[Spring] Spring Interceptor란 무엇인가?

스프링 인터셉터(Spring Interceptor)란?Controller의 Handler 호출 전/후/실행 후로 요청과 응답을 낚아채서 처리를 하는 인스턴스다. 보통 인터셉터가 필요한 경우는 특정 핸들러가 실행되기 전에 처리해야 될 로직(예를 들면 로그인 체크) 또는 컨트롤러 실행 이후 예외 처리와 같은 작업을 할 때 사용한다. 이와 비슷하게 공통 로직을 처리하는 친구들로 AOP와 Servlet 필터가 있다스프링 인터셉터 동작 과정MVC 동작 과정 중 preHandle, postHandle, afterCompletion 이 세 가지가 인터셉터가 동작할 수 있는 위치이다. 각각 Dispatcher Servlet과 컨트롤러 사이에서 컨트롤러 호출 전/후로 그리고 뷰 리졸버를 통한 뷰 렌더링 이후에 동작한다...

Spring Boot 2024.10.17

[Spring] Dependency Injection의 세 가지 방법

지금까지 나는 DI를 필드 주입을 통해서만 진행해왔다. (가장 간단하였기 때문이다..)근데 DI에 대해 공부를 좀 하다 보니 필드 주입은 지양해야 되는 방법이라는 것을 알게 되었다.!그러면 지금부터 왜 필드 주입은 지양해야 되는지, 그리고 나머지 의존성 주입 방법들은 무엇이 있는지 한번 알아보자.결론부터 말하자면 생성자 주입을 사용하는 것이 정배이다.의존성 주입의 세 가지 방법필드 주입 ( 비추천 )수정자 주입생성자 주입 ( 추천 )왜 필드 주입은 별로인가?필드 주입이란 그냥 @Autowired 애노테이션을 이용해서 스프링 IoC 컨테이너로부터 의존성이 주입되는 방식이다.이거는 그냥 쓰지 말자. Spring 공식 문서에도 언급되지 않는 방법이다.public class Controller { @Autowi..

Spring Boot 2024.10.14

Docker란 무엇인가?

Docker란 무엇인가?간단하게 개발환경 일치를 위한 도구라고 생각하자. 좀 더 자세히는 리눅스 컨테이너 기술을 활용한 오픈소스 가상화 플랫폼이라고 생각하면 된다.여기서 리눅스 컨테이너란 운영체제 위에 논리적인 영역을 구축하고 그 영역에 애플리케이션 실행에 필요한 프로그램들을 담아둔 공간이라고 생각하면 된다.Docker를 찾게되는 배경개발과정에서 발생하는 불편한 점을 생각해보자. 하나의 서비스를 개발할 때 그 서비스와 관련된 의존성들이 매우 많을 것이다.간단하게 예를 들어보자면 하나의 웹 애플리케이션을 개발해도 java, nodejs, DBMS 등 여러가지의 프로그램이 애플리케이션 동작을 위해 필요하다. 그리고 나중에 나의 로컬환경에서의 개발이 끝나고 실제 서버에 배포를 해야하는 상황이 발생했다.애플리케..

카테고리 없음 2024.09.27

Spring과 Spring Boot에 대한 소개

Spring 이란?Spring은 자바 언어를 이용하여 애플리케이션 개발을 편하게 만들어주는 프레임워크(도구)이다.프레임워크, 즉 스프링은 개발을 위한 프레임을 제공하고 우리는 스프링이 제공해 주는 프레임 위에서 편리하게 애플리케이션 개발을 진행하면 되는 것이다. 스프링이 없다면 우리는 서블릿부터 데이터베이스 연결 등 애플리케이션에 필요한 모든 코드를 우리가 직접 짜야 하고 매우 복잡하고 어려워질 것이다.  하지만 우리는 스프링이 있기 때문에 다른 코드에 쏟을 집중을 온전히 서비스의 비즈니스 로직 구현에만 집중할 수 있다.(이게 바로 스프링의 목적이다)이렇게 우리가 로직에만 집중할 수 있게 도와주는 스프링의 핵심 원리들이 이제 스프링 하면 많이 언급되는 DI, IoC, AOP 같은 개념들이다. 근데 이제 ..

Spring Boot 2024.09.26

Visual Studio Code(vscode) 한글 깨짐 문제 원인과 해결 방법

비주얼 스튜디오 한글 깨짐 발생비주얼 스튜디오 코드 처음 쓰는 사람들은 아마 다음과 같이 실행 화면에서 한글이 깨지는 현상을 겪을 것이다. 한글 깨짐 원인윈도우 사용자들한테 발생하는 문제이다. 기본적으로 인코딩 불일치 문제로 발생하는 오류인데 윈도우는 한글 인코딩을 CP949를 기본값으로 지원하고 있고 비주얼 스튜디오 코드는 기본 인코딩이 UTF-8이다. 그렇기에 우리는 현재 UTF-8로 설정되어있는 vscode 소스 파일에 CP949로 작성을 하였기 때문에 컴파일하고 실행을 해보면 한글이 깨져있는 것이다. 이를 해결하기 위한 방법을 지금부터 알아보자. 한글 깨짐 해결 방법해결 방법이 두 가지 존재한다.소스 파일 인코딩을 UTF-8 에서 EUC-KR(CP949)로 설정윈도우의 한글 인코딩 방식을 UTF-..

개발 2024.05.25

[Mac OS] homebrew를 이용한 mysql 설치 및 세팅 방법

먼저 터미널을 실행해 줍니다. (이 과정은 homebrew가 설치가 되어있어야 합니다.) [Step 1] brew install mysql mysql -u root -p (-u 뒤에는 접속할 계정을 입력하면 됩니다. 저희는 방금 설정한 root로 로그인 테스트를 해보겠습니다.) (-p는 비밀번호를 이용하여 접속한다는 의미입니다.) mysql 사용이 끝나면 exit를 입력하여 사용자 접속을 종료한 후 mysql.server stop을 입력하여 실행 중인 mysql 서버를 종료시켜 줍니다 이것으로 기본적인 mysql 설치 및 세팅은 마무리되었습니다. 편리한 사용을 위해 workbench 같은 gui 툴도 필요하신 분들은 설치해 주시면 도움이 됩니다.

개발 2024.03.15

[Intellij] Gradle dependency(의존성) 추가 방법

먼저 Gradle 프로젝트에서 의존성을 추가하는 방법은 프로젝트 폴더의 build.gradle 파일에서 dependencies 부분에 dependency를 추가하면 됩니다. Gradle 프로젝트에서 의존성을 추가하는 방법은 크게 두 가지로 나누어집니다. Maven Repository에서 직접 가져오기 Intellij 내부 기능을 이용하기 (번외) start.spring.io를 이용하여 프로젝트 시작단계에서 간단하기 의존성 추가 프로젝트 도중 추가는 불가 Maven Repository에서 직접 가져오기 첫 번째 방법은 https://mvnrepository.com/ 에서 직접 추가할 dependency를 검색해서 추가하는 방법입니다. 가장 기본적인 Spring-Web을 예시로 들어 설명하겠습니다. Mave..

Spring Boot 2023.11.13

[JAVA] 자바 클래스 첫 글자는 대문자? 자바 이름 규칙 - 네이밍 컨벤션

자바에서는 이름을 짓는 규칙이 있다. 이를 네이밍 컨벤션(Naming Convention)이라고 하는데, 코드의 가독성을 높이고 일관성을 유지하기 위해 사용되는 관례라고 보면 된다. 꼭 알아두어야 하는 이름 규칙을 알아보자. 클래스 변수 상수 메소드 먼저 이전에 공통으로 적용되는 기본적인 규칙은 이름이 자바의 예약어가 될 수는 없다. 네이밍 컨벤션과 별개로 자바의 규칙이라 예약어로 이름이 설정되면 컴파일 오류가 난다. ex) break, boolean, default, null, throw, while, do, case, try, int, double 등등.. 기본적인 자바 예약어 또한 이름의 첫 글자는 숫자가 될 수도 없다. ex) 123class, 5tar, 9ood 클래스(Class) 1. 클래스의..

JAVA 2023.07.02

아스키코드표 ASCII Table

아스키코드 중 자주 사용되는 부분은 식별이 쉽도록 푸른색으로 표시해 두었습니다. 푸른색으로 표시해 둔 부분은 외울 수 있다면 외워두는 편이 좋습니다. 상당히 사용할 일이 많기 때문이죠. 예를 들어 숫자 3이 있을 때, 이 숫자 3을 숫자 3이 아닌 문자 3으로 저장하고 싶을 때 51로 저장을 해두면 %c형식으로 읽을 때 문자 3으로 읽게 됩니다. Like this. int num = 3; char three; three = num; printf("%c", num); three = num + 48; printf("%c", num); 문자 변수에 3을 넣고 출력하면 문자 3이 아닌 아스키코드 3에 해당하는 ETX를 부릅니다. 그다음 줄처럼 num+48(숫자에 48을 추가해 주면 해당 숫자 아스키 값이 구해짐..

C언어/기초 2023.05.18

[C++] 함수 재정의와 오버라이딩란 무엇인가?

먼저 많은 글들을 살펴본 결과 C++는 오버라이딩에 대한 잘못된 설명이 인터넷에 돌아다니는 듯합니다. 그래서 제가 한방에 정리를 할 예정입니다. 먼저 기본적으로 이 정리 내용을 보기 전에 업캐스팅의 개념에 대해서는 잡혀있어야 됩니다. 먼저 함수 재정의부터 살펴보겠습니다. 함수 재정의 함수 재정의란 파생 클래스에서 기본 클래스와 동일한 형식의 함수를 작성하는 것입니다. *여기서 동일한 형식이란 리턴 타입, 함수 이름, 매개 변수 타입 및 개수 등 전부 동일한 형식을 의미합니다. 이렇게 재정의된 함수는 기본 클래스의 포인터로 접근 시 기본 클래스의 함수가 호출되고, 파생 클래스의 포인터로 접근시 파생클래스의 함수가 호출됩니다. 즉, 이미 호출할 함수는 해당 포인터의 형태의 클래스에서 부르기 때문에 컴파일 시..

C언어/기초 2023.05.15