[JAVA] try-with-resources 정리
·
BackEnd/JAVA
1. try-with-resources란?try-with-resources는 자원을 자동으로 관리하기 위한 구문으로, 자원을 명시적으로 닫지 않아도 자동으로 해제됩니다. 파일, 네트워크 소켓, 데이터베이스 연결과 같은 자원들은 반드시 사용 후 닫혀야 합니다. 자바 7에서 도입된 try-with-resources는 이러한 자원을 자동으로 해제하는 구조를 제공합니다.1.1 자원(Resource)이란?자바에서 자원이란 사용 후 반드시 해제해야 하는 외부 시스템과의 연결을 의미합니다. 파일, 데이터베이스 연결, 네트워크 소켓 등이 자원에 해당합니다. 자원을 닫지 않으면 메모리 누수나 시스템 리소스 고갈 문제가 발생할 수 있습니다.1) 자원의 종류파일: 파일을 읽고 쓰기 위한 FileReader, Buffered..
[JAVA] 자바 부모클래스 및 인터페이스 심화: 오버라이딩과 메서드 동작
·
BackEnd/JAVA
1. 자바 부모 클래스와 인터페이스 메서드를 오버라이딩 하지 않게 하는 방법자바에서 인터페이스나 부모 클래스의 메서드를 오버라이딩하지 않게 하려면 final 키워드를 활용하는 것이 핵심입니다. 하지만, 각각의 경우에서 어떻게 적용되는지 좀 더 자세히 설명드리겠습니다.1.1 부모 클래스 메서드를 오버라이딩 하지 않게 하려면부모 클래스에서 자식 클래스가 특정 메서드를 오버라이딩하지 못하게 하려면, 해당 메서드를 final로 선언해야 합니다. final로 선언된 메서드는 자식 클래스에서 오버라이딩할 수 없습니다.class Parent { public final void someMethod() { // 이 메서드는 오버라이딩 불가 }}class Child extends Parent { ..
[JAVA] 인터페이스 정리
·
BackEnd/JAVA
1. 인터페이스란?자바에서 인터페이스는 클래스가 구현해야 하는 메서드의 규격(계약)을 정의하는 역할을 합니다. 즉, 행동의 청사진(스펙)을 제공하며, 인터페이스에 선언된 메서드들을 해당 인터페이스를 구현하는 클래스가 반드시 구현해야 합니다.인터페이스는 자바의 다형성(Polymorphism)을 지원하는 중요한 개념 중 하나로, 이를 통해 서로 다른 클래스들이 동일한 방식으로 호출될 수 있도록 보장합니다.2. 인터페이스의 특징2.1 메서드 선언만 존재 (자동으로 public abstract 적용)인터페이스 내의 메서드는 구현부가 없는 추상적인 메서드입니다. 별도로 public 또는 abstract를 명시하지 않아도, 모든 인터페이스 메서드는 자동으로 public과 abstract가 적용됩니다. 즉, 인터페이..
[JAVA] 추상 클래스 (Abstract Class) 정리
·
BackEnd/JAVA
1. 추상 클래스 (Abstract Class)란?추상 클래스란 클래스의 설계도를 제공하지만 완전하지 않은 클래스입니다. 즉, 일부 메서드는 구현되어 있지만, 구체적인 내용을 정의하지 않은 추상 메서드를 포함할 수 있습니다. 추상 클래스는 직접 객체를 생성할 수 없으며, 상속을 통해 자식 클래스에서 구체적으로 구현해야 합니다.1.1 추상 클래스 정의추상 클래스는 abstract 키워드를 사용하여 선언합니다.추상 메서드도 abstract 키워드를 사용하며, 해당 메서드는 내용 없이 메서드 선언만 있습니다.자식 클래스에서 추상 메서드를 반드시 구현해야 합니다.2. 추상 클래스의 특징2.1 추상 클래스는 객체를 생성할 수 없다.추상 클래스는 불완전한 클래스이므로 직접적으로 객체를 생성할 수 없습니다. 추상 메..
[JAVA] 접근 지정자 (Access Modifiers) 정리
·
BackEnd/JAVA
1. 접근 지정자란?자바에서 접근 지정자(access modifier)는 클래스, 메서드, 변수 등에 대한 접근 범위를 설정하는 키워드입니다. 접근 지정자는 클래스 외부에서 해당 멤버에 대해 어디까지 접근할 수 있는지를 제어합니다. 접근 범위를 설정함으로써 캡슐화(encapsulation)를 강화하고, 코드의 보안성과 유지보수성을 높일 수 있습니다.접근 지정자는 총 네 가지가 있으며, 각각은 해당 멤버에 대해 접근할 수 있는 범위(동일 패키지, 자식 클래스, 외부 클래스 등)를 제한하거나 허용하는 역할을 합니다. 클래스 설계 시 접근 지정자를 적절히 사용함으로써 데이터 보호, 코드의 모듈화, API의 안정성 등을 보장할 수 있습니다.2. 접근 지정자의 종류2.1 public 접근 지정자정의: public..
[Spring] @ResponseBody VS ResponseEntity<T>
·
BackEnd/Spring & JPA
1. @ResponseBody란?@ResponseBody는 Spring MVC에서 컨트롤러 메서드가 반환하는 값을 HTTP 응답 본문으로 직렬화하여 클라이언트에게 전달할 때 사용됩니다. 반환되는 데이터는 Jackson 라이브러리를 사용하여 JSON 형식으로 변환됩니다. 기본적으로 HTTP 상태 코드는 200 OK로 설정되며, 데이터만 반환하는 단순한 API 응답 처리에 주로 사용됩니다.1.1 @ResponseBody의 주요 특징JSON, XML과 같은 포맷으로 데이터를 반환HTTP 상태 코드는 기본적으로 200 OK주로 REST API 응답에서 사용뷰를 반환하지 않고 데이터를 직렬화하여 전달2. ResponseEntity란?ResponseEntity는 HTTP 응답의 상태 코드, 헤더, 본문을 모두 명시..
[Spring] @Controller VS @RestController
·
BackEnd/Spring & JPA
1. @Controller 란?@Controller는 Spring MVC 패턴에서 주로 사용되는 어노테이션으로, 웹 페이지(View)를 반환하기 위해 사용됩니다. 이 어노테이션을 통해 컨트롤러 클래스를 정의하면, 클라이언트 요청을 받아서 JSP나 Thymeleaf와 같은 뷰(View)를 생성하여 반환할 수 있습니다. Spring에서 @Controller는 주로 전통적인 웹 애플리케이션에서 페이지를 렌더링할 때 사용됩니다.1.1 @Controller 동작 흐름클라이언트 요청: 클라이언트는 브라우저 또는 HTTP 클라이언트를 통해 DispatcherServlet으로 URI에 해당하는 요청을 보냅니다. 예를 들어 /users/detailView와 같은 URI로 요청이 들어옵니다.Handler Mapping: ..
[JAVA] 자바에서 main 메서드가 static인 이유
·
BackEnd/JAVA
자바를 처음 배우면 가장 먼저 접하는 메서드가 바로 main 메서드입니다. 하지만 "왜 main 메서드는 항상 static으로 선언되어야 하는가?"라는 질문에 대해 깊이 생각해 본 적 있으신가요? 이번 포스팅에서는 자바의 main 메서드와 static 키워드의 관계를 쉽게 이해할 수 있도록 정리해 보겠습니다.1. main 메서드란?main 메서드는 자바 애플리케이션의 진입점(entry point)입니다. JVM(Java Virtual Machine)은 프로그램 실행 시 가장 먼저 main 메서드를 호출하여 프로그램을 시작합니다.public static void main(String[] args) { // 실행될 코드}구성 요소public: JVM이 외부에서 접근할 수 있도록 선언static: 객체 ..
[Spring] 스프링 개념 및 동작 원리 정리
·
BackEnd/Spring & JPA
1. Spring framework란?Spring Framework는 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크입니다. 엔터프라이즈급 애플리케이션을 개발할 수 있는 기능을 종합적으로 제공하면서도 경량화된 솔루션을 제시합니다.일반적인 엔터프라이즈급 개발에서는 과도한 엔지니어링 기술로 인해 고가의 WAS(Web Application Server)가 필요하지만, Spring은 필요한 기술을 가볍고 단순한 환경에서 사용할 수 있도록 제공합니다.2. Spring framework 특징2.1. IoC (Inversion of Control, 제어의 역전)IoC는 객체의 생성과 관리 제어권을 개발자가 아닌 스프링 컨테이너에 넘기는 개념입니다. 전통적으로는 개발자가 직접 객체를 생성하고 의존성을 관리해야 했지..
[JAVA] 레코드 (record) 정리
·
BackEnd
1. 레코드 (record)란?자바에서 record는 자바 16부터 정식 기능으로 도입되어, 자바 17에서 계속해서 사용되고 있는 기능입니다. record는 불변의 데이터 운반 객체를 간단하게 생성할 수 있는 방법을 제공합니다. 이는 주로 데이터를 담기 위한 클래스에 매우 유용하며, 클래스를 정의할 때 필요한 상용구 코드(boilerplate code)의 양을 대폭 줄여줍니다.2. record의 주요 특징들2.1 불변성 (Immutability)레코드는 불변 객체입니다. 레코드의 모든 필드는 final로 선언되며, 객체가 생성된 후에는 필드 값을 변경할 수 없습니다. 즉, 레코드는 객체의 상태가 절대 바뀌지 않도록 보장합니다.public record Person(String name, int age) {..