Java 13

[Spring] Spring Framework vs Spring Boot 비교 정리

1. 개념과 철학의 차이Spring Framework는 개발자가 직접 조립하는 구조이다.각 설정파일을 직접 관리하고, 필요한 라이브러리 버전도 일일히 맞춰야 했다. 반면 Spring Boot는 "실행 중심 프레임워크" 이다.내장 서버와 자동 설정을 통해 실행만 하면 바로 서비스가 구동된다.구분 Spring Framework Spring Boot 핵심 철학개발자가 설정하고 조립설정 자동화 + 실행 중심실행 구조외부 WAS 기반내장 WAS 포함 (Tomcat 등)진입점web.xml → DispatcherServletmain() → SpringApplication.run() 2. 설정 구조의 진화Spring 시절에는 web.xml, root-context.xml, servlet-context.xml 등 ..

Java/Spring 2025.10.29

[Spring] 자주 사용하는 어노테이션 정리 및 예시

Spring Framework는 객체를 관리하고 계층 간 의존성을 자동 주입하기 위해 다양한 어노테이션을 제공한다.이 중 실제 개발 현장에서 자주 사용되는 핵심 어노테이션들을 중심으로 설명한다. 1. @Component, @Service, @Repository, @Controller이 네 가지는 Spring Bean 등록용 어노테이션이다.즉, Spring이 해당 클래스를 컨테이너에서 관리하도록 등록하는 역할을 한다.내부적으로는 모두 @Component를 기반으로 하며, 역할에 따라 의미만 다르다. (1) @Component가장 기본적인 Bean 등록용 어노테이션이다.Helper, Util, Validator 등 특정 계층에 속하지 않는 일반 클래스를 Bean으로 등록할 때 사용한다.import org.s..

Java/Spring 2025.10.28

[Spring] 순서 의존 AOP로 인해 파라미터 순서만 바꿔도 코드가 동작하지 않은 이유

1. 문제 상황Spring MVC 기반 프로젝트에서 로그아웃 기능을 점검하던 중, 동일한 기능을 하는 두 메서드 중 하나는 정상 동작하고 다른 하나는 아무 반응이 없었다. 두 메서드는 코드 한 줄 다르지 않았고, 단지 파라미터 순서만 달랐다. // 정상 동작@RequestMapping("/logout")public String logout(HttpServletRequest request, @ModelAttribute UserContext userContext, HttpServletResponse response) { ... }// 동작 안 함@RequestMapping("/logout")public String logout(HttpS..

Java/Spring 2025.10.21

[Java Web] Eclipse에서 Tomcat 버전 불일치로 인한 실행 오류 해결

1. 문제 상황 Eclipse에서 웹 프로젝트를 실행했을 때 다음과 같은 오류가 발생했다.오류: 기본 클래스 org.apache.catalina.startup.Bootstrap을(를) 찾거나 로드할 수 없습니다.원인: java.lang.ClassNotFoundException: org.apache.catalina.startup.Bootstrap 프로젝트의 Java Build Path에는 Tomcat 8.5가 등록되어 있었고, Servers 탭에서는 Tomcat 9.0을 사용하고 있었다. 2. 원인 분석Eclipse에서 Tomcat을 사용할 때는 다음 두 설정이 동일해야 한다.설정 위치설명Java Build Path > Libraries컴파일 시 참조하는 Tomcat API 라이브러리Servers > T..

Java 2025.08.06

[Java] Null Check

1. 개요 우리가 자바로 프로그램을 개발하다보면 가장 쉽게 마주할 수 있는 오류는 NullPointerException(java.lang.NullPointerException)일 것이다. 이는 보통 객체 값이 null이거나 초기화가 안되어 있는 인스턴스를 사용할때 발생하게 된다. Null 객체에서 method를 호출하는 경우 Null 객체의 필드에 접근하거나 값을 변경하는 경우 Null 의 길이를 배열처럼 취하는 경우 Null을 throw하는 경우 Null을 통해 동기화 할 경우 public class Sample { public static void main(String[] args){ Foo foo = null; foo.toString(); // NullPointerException foo.equal..

Java 2022.11.25

[Java] JSON 변환 라이브러리 Jackson에 대해

1. Jackson이란? Java Object를 JSON으로 변환하거나 JSON을 Java Object로 변환하는 데 사용할 수 있는 Java 라이브러리이다. (jackson - Github주소) 2. Jackson의 특징 Stream API: 스트림 형식으로 데이터를 분석하고 생성하기 때문에 성능이 좋다. Tree Model: XML의 DOM처럼 Node 형태로 데이터를 다룰 수 있기 때문에 유연성이 좋다. Data Binding: POJO기반의 자바 객체들을 JSON으로 변환시킬 수 있다. 3. Jackson의 코어 모듈 Streaming("jackson-core"): 로우레벨 스트리밍 API를 정의하고 JSON관련 구현을 포함한다. Annotations("jackson-annotations"): 표..

Java 2022.11.22

[Java] 예외처리

1. 예외란? 개념적으로 예외란, 어떤 이유로 컴퓨터가 더 이상 프로그램을 진행할 수 없는 상태가 되는 것을 의미한다. 예를 들어서 배열의 크기보다 큰 곳을 접근하려 한다던가, 0으로 수를 나누려 한다던가, 가져오려는 값이 Null일 경우 등등.. 프로그램을 만들다 보면 수없이 많은 오류를 마주치게 된다. 이러한 오류들은 프로그램이 오동작을 하지 않도록 하기 위한 선기능이 있으며, 이러한 오류들을 무시하고 싶을 때도 있고, 오류가 날때 적절한 처리를 하고싶을 때도 있을 것이다. 이러한 예외들을 자바에서는 어떻게 처리하는지 살펴보고, 보다 안전하고 유연한 프로그래밍을 구사해보자. 2. 예외 처리 기본 (try / catch) Java의 예외처리의 기법에 대해서 살펴보자. 다음은 예외처리를 위한 try, c..

Java 2022.09.22

[Maven] mvn clean install

1. mvn clean, install 명령어는? clean: 빌드시 생성된 모든 것들을 삭제해준다. Maven에서 자체 빌드 수명 주기 단계이다.(action이나 task로 생각할 수 있다.) 주로 빌드 결과물인 target폴더의 내용을 모두 삭제해준다. install: 프로젝트를 빌드하여 jar 실행 파일을 만들어주는 명령어이다. local repository에 패키지를 배포한다. 의존성 있는 다른 프로젝트에서 local repository에 존재하는 패키지를 참조할 수 있게 된다. 2. 메이븐 생명주기 (Maven lifecycle) (1). process-resources /src/main/resources 디렉토리를 에 생성한다. (2) complie 소스코드를 컴파일해서 클래스를 에 생성한다...

Java/Maven 2022.09.22

[Java] 빌더 패턴(Builder Pattern)에 대해

1. 빌더 패턴(Builder Pattern)이란? 빌더 패턴은 복잡한 객체를 생성하는 방법을 정의하는 클래스와 표현하는 방법을 정의하는 클래스를 별도로 분리하여, 서로 다른 표현이라도 이를 생성할 수 있는 동일한 절차를 제공하는 패턴이다. 빌더 패턴은 생성해야 되는 객체가 Optional한 속성을 많이 가질 때 빛을 발휘한다. 2. 빌더 패턴(Builder Pattern)을 사용해야 하는 이유 생성자와 수정자로 구현된 다음과 같은 Employee 클래스를 바탕으로 왜 생성자나 수정자보다 빌더를 써야하는지 이해해보도록 하자. @NoArgsConstructor @AllArgsConstructor public class Employee { private String id; private String name..

Java 2022.08.30

[Java] Ubuntu에 AdoptOpenJDK 설치

수동으로 설치할 수도 있지만 패키지 매니저로 간단하게 설치할 수 있다. # adoptopenjdk의 패키지를 인증하는데 사용하는 키를 신뢰할수 있는 키 목록에 추가한다. wget -qO - https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public | sudo apt-key add - # adoptopenjdk의 apt repository를 추가한다. sudo add-apt-repository --yes https://adoptopenjdk.jfrog.io/adoptopenjdk/deb/ # 현재 사용 가능한 패키지와 그 버전에 대해서 리스트를 업데이트 해준다. sudo apt update # 아래 목록중 설치하고자하는 버전과 JVM type(hotsp..

Java 2022.08.10
반응형