Software Engineering Blog

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

전체 글 24

[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

[자료구조] 스택(Stack)이란 무엇인가? 그리고 어떻게 사용하는지 C로 알아보기

안녕하세요~ 준형입니다. 오랜만에 블로그에 왔는데 이번에는 자료구조를 배우면 거의 초반에 배우는 비교적 쉬운 자료구조인 스택을 쉽고 정확하고 확실하게! 알려드리기 위하여 글을 쓰러 왔습니다. 순서는 1. 스택이란 무엇인지 간단하게 알아보고 2. 코드와 함께 구현과 동작 원리를 알려드리고 3. 마지막으로 2번 과정으로 작성된 코드의 동작까지 한번 확인해보죠 스택이란 무엇인가? 스택의 기본 동작 과정은 후입선출 (Last in First Out) 즉, 가장 마지막에 들어간 데이터(가장 최근에 들어온 데이터)가 가장 먼저 빠져나가는 방식입니다. 실생활에 간단히 비교해 보자면 물건이 쌓여 있을 때 가장 위에 있는 물건부터 집어가듯 스택도 똑같다고 생각하시면 될 거 같습니다. 그림으로도 간단하게 보여드리자면 자 ..