목록전체 글 (55)
지니의 개발로그
🤔 오늘의 궁금증 @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; Java에서 엔티티를 정의할 때,ID 필드나 데이터베이스와 상호작용하는 필드에서 int가 아닌 Integer를 사용 하는 이유가 무엇일까?📖 wrapper class(래퍼 클래스)wrapper class(래퍼 클래스)는 Java에서 기본 자료형(primitive type)을 객체로 다룰 수 있게 해주는 클래스Java의 기본자료형에는 각각에 대응하는 래퍼 클래스가 존재한다. int → Integerboolean → Booleanchar → Characterdouble → Doublefloat → Floatlong → Longshort → Shor..
🤔 오늘의 궁금증@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id; @GeneratedValue 어노테이션을 쓰다가 문득 다른 strategy 옵션이 궁금해졌다. 위 문장이 이해가 안가서 쓰는 글..📖 @ GeneratedValue 어노테이션strategy 옵션은 데이터베이스에서 자동으로 ID를 생성하는 방법을 지정한다.네 가지 주요 방법이 있으며, 각각 데이터베이스가 ID를 생성하는 방식이 다르다. 1. AUTO옵션을 선택하지 않는 경우 디폴트 값JPA가 사용 중인 데이터베이스에 따라 자동으로 가장 적절한 방법을 선택예를 들어, MySQL에서는 'IDENTITY', Oracle에서는 'SEQUENCE'을 선택2. IDENT..
📕 초기화(initialization)란?변수를 선언한 후에 해당 변수에 초기값을 할당하는 과정으로,초기화를 통해 변수가 사용되기 전에 명확한 값을 가지게 된다. 변수의 초기 상태를 설정하고 예상하지 못한 오류를 방지한다. 📙 초기화의 중요성1. 명확한 초기 상태 설정변수의 초기 상태가 명확해진다.코드의 가독성을 높여서 개발자들이 코드를 이해하는데 도움을 준다.2. 예기치 않은 동작 방지초기화되지 않은 변수를 사용하려고 하면 예상하지 못한 값이 들어있을 수 있다.프로그램의 예상하지 못한 동작이나 버그를 방지한다.3. 컴파일러 오류 방지Java에서는 초기화되지 않은 변수를 사용하려고 할 때 컴파일 오류가 발생한다.📒 변수의 초기화 방법1. 변수 후 초기화 :int num;num = 10;변수를 선언한..
🤔 오늘의 궁금증public int add(int num1, int num2) { int sum; // 변수 선언, 초기화되지 않음 sum = num1 + num2; // 변수에 값 할당 return sum; // 변수 반환} 위와 같은 간단한 함수를 작성하다가 궁금증이 생겼다. int sum;으로 sum 변수를 선언만 하고 초기화는 하지 않은 코드에서 지역 변수는 수동초기화를 해야 하는 걸로 아는데,초기화를 하지 않아도 문제가 없는 걸까? 📖 지역변수 초기화Java에서 지역 변수는 명시적으로 초기화되지 않으면 사용할 수 없다.컴파일러는 초기화되지 않은 변수를 사용하려고 할 때 오류를 발생시킨다. 즉, 지역 변수를 초기화 하지 않으면 컴파일 오류가 발생하는 것이 일반적이다. 그러나 ..
🔨 자바 삽질 트러블 슈팅 기록 🔨 🔴 문제 : Annotation type expected 오류 Class 명이 Column인 엔티티 클래스 코드를 작성 중에@Column 어노테이션을 함께 사용하면서 충돌이 발생했다. 🟠 분석Annotation type expected는 자바 컴파일 오류 메시지로,자바에서 어노테이션 유형이 예상되는 위치에 어노테이션이 아닌 다른 것이 존재할 때 발생한다. 어노테이션 유형을 사용해야 할 위치에 다른 코드 요소(예: 클래스 이름)를 사용한 경우.어노테이션의 임포트가 올바르게 되지 않은 경우.보통 위와 같은 경우에 컴파일러가 오류를 발생시킨다. 자바 컴파일러는 Column이라는 이름이 클래스인지 어노테이션인지 명확히 구분할 수 없을 때 "Annotation t..
🟢 @Column 어노테이션이란JPA(Java Persistence API)에서 제공하는 어노테이션으로엔티티 클래스의 필드를 데이터베이스 테이블의 컬럼에 매핑하는 데 사용한다. 🟢 주요 속성name:데이터베이스 테이블의 컬럼 이름을 지정기본값은 필드 이름nullable:컬럼이 NULL 값을 허용할지 여부를 지정기본값은 trueunique: 컬럼에 고유 제약 조건을 설정기본값은 falselength: 문자열 컬럼의 최대 길이를 지정기본값은 255columnDefinition: SQL 구문을 통해 컬럼의 정의를 직접 지정 가능🟢 코드 예시@Column(name = "column_name", nullable = false) private String name;
🟢 @RequiredArgsConstructorLombok 라이브러리에서 제공하는 어노테이션final 또는 @NonNull 필드를 매개변수로 가지는 생성자를 자동으로 생성 생성자 작성의 번거로움을 줄이고, 코드의 가독성을 높일 수 있는 유용한 어노테이션.🟢 final 필드final 키워드가 붙은 필드는 반드시 생성자에서 초기화되어야 한다.@RequiredArgsConstructor는 이러한 필드를 초기화할 수 있도록 생성자를 만들어준다. 🟢 @NonNull 필드@NonNull 애너테이션이 붙은 필드는 null 값을 가질 수 없도록 설정된다.생성자에서 해당 필드가 null인지 검사하고,null이면 NullPointerException을 던지도록 한다. 🟢 그 외 필드final이나 @NonNull이 ..
🚩 20240619 TIL 🟢 none DDL을 자동으로 생성하지 않는다.Hibernate는 데이터베이스 스키마에 어떤 변경도 하지 않는다. 프로덕션 환경에서 사용개발자가 수동으로 데이터베이스 스키마를 관리하는 경우 적합 🟢 validate 기존 데이터베이스 스키마가 엔티티 매핑과 일치하는지 검증한다.Hibernate는 데이터베이스 스키마에 어떤 변경도 하지 않는다. 데이터베이스 스키마와 엔티티 정의 간 불일치를 찾고 싶을 때 사용주로 프로덕션 환경에서 사용 🟢 update 엔티티와 매핑된 테이블을 업데이트한다.새로운 필드나 테이블을 추가하지만, 기존 데이터를 보존한다.변경된 부분만 반영 개발 중에 데이터 손실 없이 스키마를 업데이트하고자 할 때 사용 🟢 create 기존 테이블을 삭..
🚩 20240618 TIL 🟢 JDBC(Java Database Connectivity) 자바 언어에서 데이터베이스에 연결하고 SQL 쿼리를 실행하여 데이터를 처리할 수 있게 해주는 표준 API 다양한 관계형 데이터베이스와의 상호작용을 일관되게 처리 가능 🟢 JDBC의 주요 개념 Driver:JDBC 드라이버는 자바 애플리케이션과 데이터베이스 간의 통신을 담당합니다.각 데이터베이스 벤더는 자사 데이터베이스에 맞는 JDBC 드라이버를 제공합니다. 예를 들어, MySQL, Oracle, PostgreSQL 등의 데이터베이스는 각각의 JDBC 드라이버를 가지고 있습니다.Connection:Connection 객체는 특정 데이터베이스와의 연결을 나타냅니다.데이터베이스 URL, 사용자 이름, 비밀번호 등..
🚩 20240617 TIL 🟢 ORM(Object-Relational Mapping) 프레임워크 객체 지향 프로그래밍 언어와 관계형 데이터베이스 간의 매핑을 자동으로 처리해 주는 도구객체 지향 프로그래밍의 클래스와 인스턴스를 데이터베이스의 테이블과 레코드로 변환하고, 그 반대도 수행 ORM 프레임 워크를 통해 데이터베이스와 상호작용할 때SQL 쿼리를 직접 작성하지 않고도 객체 지향 방식으로 데이터를 다룰 수 있다. 🟢 주요 기능 자동 매핑:ORM은 객체와 데이터베이스 간의 매핑을 자동으로 처리예를 들어, Java 클래스의 필드를 데이터베이스 테이블의 컬럼에 자동으로 매핑추상화된 데이터베이스 작업:ORM을 사용하면 데이터베이스 작업을 추상화SQL 쿼리를 직접 작성하지 않고도 데이터베이스와 상호작용 가..
🚩 20240614 TIL 🟢 Hibernate Hibernate는 Java 객체와 데이터베이스 테이블 간의 매핑을 처리하는 ORM(Object-Relational Mapping) 프레임워크이다. 개발자는 SQL 쿼리를 직접 작성하지 않고도 데이터베이스와 상호작용할 수 있다. 객체와 테이블 매핑:Hibernate는 Java 클래스와 데이터베이스 테이블 간의 매핑을 설정하여 객체지향 프로그래밍을 지원예를 들어, Java 클래스의 필드와 데이터베이스 테이블의 컬럼이 매핑자동화된 CRUD 작업:Hibernate는 기본적인 CRUD(Create, Read, Update, Delete) 작업을 자동으로 처리이를 통해 개발자는 데이터베이스와의 상호작용을 더 쉽게 관리 가능HQL (Hibernate Query ..
🟢 메모리 영역 바의 메모리 영역은 크게 스택(Stack) 영역, 힙(Heap) 영역, 메서드(Method) 영역, 그리고 런타임 상수 풀(Runtime Constant Pool) 영역으로 구분된다. 스택(Stack) 영역: 각 스레드마다 하나의 스택이 할당되며, 메서드 호출 시 프레임이 추가되고 메서드 종료 시 프레임이 제거됩니다. 지역 변수, 매개 변수, 리턴 값 등이 저장힙(Heap) 영역: 객체와 배열이 생성되는 영역으로, 새로운 객체가 생성되면 이 영역에 할당되며, 가비지 컬렉터에 의해 관리메서드(Method) 영역: 클래스 정보, 상수, 정적 변수, 생성자 코드 등이 저장되는 영역으로, 모든 스레드가 공유하여 사용런타임 상수 풀(Runtime Constant Pool): 메서드 영역의 일부..
🟢 배움 자바에서 배열의 주소값은 임의로 할당되지 않고, 메모리 관리 규칙에 따라 체계적으로 할당된다. 자바에서 배열을 생성하면 할당되는 메모리 주소값은JVM(Java Virtual Machine) 의 메모리 관리 전략에 따라 결정되므로,임의로 할당되지 않습니다.JVM의 힙 영역에 배열 요소들을 위한 연속된 메모리 공간이 할당된다.메모리 할당과 해제 규칙을 따라 사용 가능한 메모리 영역 중에서 적절한 위치에 체계적으로 할당된다. 🟢 메모리 관리 규칙 자바의 메모리 관리 규칙은 JVM의 메모리 관리 전략에 따라 결정된다.주로 가비지 컬렉션(Garbage Collection)과 관련이 있다. JVM은 프로그램 실행 시 필요한 메모리 공간을 할당하고, 더 이상 사용되지 않는 객체들을 주기적으로 제거하..
🟢 Keep 팀원들간의 소통과 응원이 팀의 사기를 높힐 수 있었습니다.팀 프로젝트 전부터 진행된 팀 소통시간도 팀의 화합을 위해 중요한 부분인것 같아추후에서 팀원들간의 관계를 잘 유지하기 위해 소통시간을 자주 가질 수 있도록 해야 겠습니다. 🔴 Problem 아직 부족한 개념들이 많아 코드를 작성하고 오류를 해결하는데 시간이 많이 소요되었습니다.또한 리뷰와 리팩토링 시간이 부족해서 완수는 했지만 조금 더 보완할 수 있었다면 더 좋았을 것 같습니다. 🔵 Try 처음 계획 수립을 더 꼼꼼하게 기획해야 함의 중요성을 느꼈습니다.프로젝트 초기 단계에서 예상되는 문제와 해결 방안까지 설정할 수 있도록 해봐야겠습니다.
🟢 의존성이란? - 프로젝트가 정상 동작하기 위해 필요로 하는 외부 라이브러리, 프레임워크 등을 의미합니다.- 예를 들어 Spring Boot 프로젝트에서는 Spring Framework, Tomcat 등의 의존성이 필요합니다. 🟢 의존성 관리의 필요성 - 프로젝트 규모가 커질수록 의존성이 복잡해지므로, 이를 체계적으로 관리해야 합니다.- 의존성 관리를 통해 버전 충돌 문제를 해결하고, 재현 가능한 빌드 환경을 만들 수 있습니다. 🟢 의존성 관리 도구 - Maven, Gradle, npm 등의 도구를 사용하여 의존성을 선언하고 자동으로 관리할 수 있습니다.- 이를 통해 의존성 설치, 버전 관리, 충돌 해결 등을 편리하게 수행할 수 있습니다.
🟢 제네릭이란 자바에서 클래스나 메소드에 사용할 데이터 타입을 일반화하여 다양한 타입을 처리할 수 있도록 하는 기능 클래스나 메소드에서 사용할 데이터 타입을 나중에 지정할 수 있도록 한다.코드의 재사용성을 높이고, 타입 안전성을 보장하며, 코드의 가독성을 향상시킨다. 타입 매개변수를 사용하여 데이터 타입을 일반화한다.타입 매개변수는 일반적으로 , , , 등의 형식으로,클래스, 인터페이스, 메소드에서 사용된다. 🟢 Object 클래스 내용 쓰기 본문2 제네릭을 사용하지 않는 경우, 다양한 타입의 객체를 처리하기 위해서는 Object 클래스를 사용 타입 안전성이 보장되지 않으며,객체를 가져올 때마다 명시적 형 변환을 해야 한다. 🟢 타입 제한 제네릭을 사용할 때, 타입 매개변수에 특정 타입의 제..
🟢 - 라이브러리는 특정 기능을 수행하는 코드 집합으로, 다른 프로그램에서 불러와 사용할 수 있습니다.- 라이브러리를 사용하면 개발자가 반복적인 코드를 직접 작성할 필요가 없어져 생산성이 향상됩니다.- 대표적인 라이브러리로는 표준 라이브러리, 써드파티 라이브러리 등이 있습니다.- 표준 라이브러리는 프로그래밍 언어와 함께 제공되는 기본 라이브러리입니다.- 써드파티 라이브러리는 외부 업체나 오픈소스 커뮤니티에서 개발된 라이브러리입니다.- 라이브러리는 일반적으로 정적 라이브러리와 동적 라이브러리로 구분됩니다.
🚩 20240604 TIL 내일배움캠프 #50일차 🟢 DTO(Data Transfer Object) 데이터 전송 및 이동을 위해 생성되는 객체Client에서 보내오는 데이터를 객체로 처리할 때 사용또한 서버의 계층 간의 이동에도 사용DB와의 소통을 담당하는 Java 클래스(NTT)를 그대로 Client에 반환하는 것이 아니라DTO로 한번 변환한 후 반환 이름 규칙 예시 : Request의 데이터를 처리할 때 사용되는 객체는 RequestDtoResponse를 할 때 사용되는 객체는 ResponseDto(절대적인 규칙은 아니기 때문에 조직에 따라 규칙이 다를 수 있음)
🚩 20240603 TIL 내일배움캠프 #49일차 🟢 생성자 객체를 생성할때 초기 상태를 설정하기 위해 클래스 내에 정의되는 특별한 메서드이다. 클래스 이름과 동일하며, 반환 타입을 명시하지 않는다. 생성자는 주로 객체의 초기화를 담당한다.객체 생성시 필요한 데이터를 받아 객체의 필드(멤버 변수)를 초기화 하는데 사용한다. 생성자를 명시적으로 작성하지 않을 수도 있는데,이럴때 자바컴파일러가 기본 생성자를 자동으로 제공한다. 기본 생성자는 매개변수가 없으며객체의 필드를 기본값으로 초기화한다. 생성자는 오버로딩이 가능하다.즉, 같은 이름의 생성자를 여러개 정의할 수 있다.다만 구분하기 위해 매개변수의 타입, 개수, 순서는 달라야 한다. 생성자를 정의하는 이유 :객체의 멤버 변수 초기화객체 생성시 유효성 ..
🚩 20240531 TIL 내일배움캠프 #46일차 🟢 Access Modifier(접근 제어자) 클래스, 메서드, 변수 등에 접근할 수 있는 범위를 제어하는 키워드클래스와 클래스의 멤버(메서드, 변수)에 대한 접근 권한을 설정하여코드의 캡슐화와 보안을 강화한다. 1. Public(공개): 해당 클래스, 메서드, 또는 변수는 모든 클래스에서 접근할 수 있습니다. 예: `public class MyClass`. 2. Private(비공개): 해당 클래스, 메서드, 또는 변수는 오직 같은 클래스 내에서만 접근할 수 있습니다. 외부 클래스나 하위 클래스에서 접근할 수 없습니다. 예: `private int myVariable`. 3. Protected(보호): 해당 클래스, 메서드, ..
🚩 20240530 TIL 내일배움캠프 #45일차 🟢 Component(컴포넌트)란? Component(컴포넌트)는 독립적으로 실행 가능한 소프트웨어 단위 🟢 Component(컴포넌트) 특징 1. 모듈성: 컴포넌트는 명확히 정의된 인터페이스를 가지며, 다른 컴포넌트와 독립적이다.2. 재사용성: 컴포넌트는 여러 시스템에서 재사용될 수 있다.3. 대체 가능성: 새로운 컴포넌트로 기존 컴포넌트를 교체할 수 있다.4. 배포 가능성: 컴포넌트는 독립적으로 배포될 수 있다. 🟢 Component(컴포넌트) 구현 웹 애플리케이션에서는 React, Angular 등의 프레임워크에서 UI 컴포넌트를 사용엔터프라이즈 애플리케이션에서는 EJB, .NET 컴포넌트 등을 사용 🟢 컴포넌트 기반 개발(CBD, Com..
🚩 20240529 TIL #44일차 다락방 🟢 구문별 예시 if 조건문계산로직 판별 및 평가사용자 입력값에 따른 동작수행입력에 따른 메시지 출력, 로그인 검증 등 switch 조건문단일 변수의 값에 따라 여러 가지 경우를 처리할 때카테고리, 분류요일, 메뉴 등 for 반복문처음과 끝, 반복 횟수가 명확할 때배열의 모든 요소 출력 while 반복문조건이 명확하지 않은 채로 특정 조건이 만족할 때까지 기다려야 하는 경우반복 횟수가 명확하지 않을 때조건이 참인 동안 카운터 증가
🚩 20240528 TIL 내일배움캠프 #43일차 🟢 함수와 Method(메서드)의 공통점 메서드와 함수는 모두 특정 작업을 수행하는 코드 블록 🟢 함수와 Method(메서드)의 차이점 Method(메서드)는 클래스 내부에 정의되며,해당 클래스의 인스턴스를 통해서만 호출할 수 있다.클래스의 속성(필드)에 접근할 수 있으며,객체의 행위를 정의하고 상태를 조작하는 역할을 한다. Function(함수)는 모듈이나 프로그램 단위로 정의되며,프로그램 전체에서 독립적으로 호출할 수 있다.함수는 전역 변수에만 접근 가능하며, 특정 작업을 수행하는 코드 블록이다. 🔵 정리 구분메서드함수정의 위치클래스 내부모듈/프로그램 단위호출 방식객체.메서드명(인자)함수명(인자)접근 범위클래스 속성(필드)전역 변수프로그래..
🚩 20240527 TIL 내일배움캠프 #42일차 🟢 Method(메서드)의 정의 객체지향 프로그래밍에서 클래스 내부에 정의된 함수로,해당 클래스의 인스턴스(객체)에 대한 작업을 수행한다. 🟢 Method(메서드)의 특징 1. 클래스 소속 :메서드는 클래스 내부에 정의되며, 해당 클래스의 인스턴스를 통해서만 호출할 수 있다.2. 객체의 행위 :메서드는 객체의 상태(속성)를 조작하거나 특정 작업을 수행하는 역할을 한다.3. 데이터 접근 제어:메서드를 통해 객체의 내부 데이터에 대한 접근을 제어할 수 있습니다.4. 재사용성 :클래스의 인스턴스를 여러 개 생성할 수 있으므로, 메서드도 재사용 가능합니다. 🟢 Method(메서드)의 구조 클래스정의: class 클래스이름: def 메서드이름(..
🚩 20240524 TIL 내일배움캠프 #39일차 🟢 Interface(인터페이스)의 정의 Interface(인터페이스)는 서로 다른 Component(컴포넌트) 간의 상호작용을 정의하는 규약인터페이스는 소프트웨어 설계 시 추상화, 캡슐화, 다형성 등의 객체지향 원리를 구현하는 데 중요한 역할을 한다. 🟢 Interface(인터페이스)의 역할 1. 컴포넌트 간 통신 방식 정의- 메서드나 함수의 이름, 파라미터, 반환 값 등을 명시한다.2. 구현으로부터 추상화- 인터페이스는 구현 세부 사항을 감추고 기능 만을 노출한다.3. 계약 역할- 인터페이스를 구현하는 클래스는 인터페이스에 정의된 계약을 준수해야 한다.4. 다형성 지원- 인터페이스를 통해 여러 구현체를 동일한 방식으로 취급할 수 있다.
🚩 20240523 TIL 내일배움캠프 #38일차 🟢 Entity란?Entity는 데이터베이스에서 개체를 표현하는 기본 단위이다.데이터베이스 내에 구조화된 형태로 저장되며, 고유한 식별자(Primary key)를 가진다. 잘못 정의하면 데이터 중복, 누락, 무결성 문제가 발생할 수 있다. 속성(Attribute)이 포함 될 수 있으며, 고유 식별자로 각 인스턴스를 유일하게 구분한다.또한 Entity 간에는 관계가 존재한다.🟠 예시1 학생 정보를 저장하는 데이터베이스 '학생'이 하나의 Entity.학생 Entity에는 이름, 주소, 전화번호, 이메일, 학번 등의 속성(Attribute)이 포함 될 수 있다. Entity는 고유한 식별자를 가지고 있어야 한다.고유한 식별자(Primary Key)를 통해..
🚩 20240522 TIL 내일배움캠프 #37일차 🟢 프레임워크 vs. 라이브러리프레임워크와 라이브러리는 모두 재사용 가능한 코드 집합이다.이 둘의 차이점에 대해 알아보자. 프레임워크 (Framework)는 뼈대가 되는 기본 구조.개발할 때 필요한 기본적인 구조와 틀을 제공이 구조 안에서 필요한 코드를 채워 넣으면 된다.즉, 프레임 워크는 전체적인 구조와 흐름을 결정 프로그램의 전체 구조와 동작 흐름을 프레임워크가 제어.개발자는 프레임워크가 정한 규칙에 맞춰 코드를 작성프레임워크가 메인 코드를 포함하고 있으며,개발자는 이에 맞춰 작성한 코드를 프레임워크에 연결한다. 라이브러리(Library)는 도구.특정 기능을 구현하고자 할 때 필요한 도구를 라이브러리에서 찾아 사용필요한 기능을 수행하는 라이브러..
🚩 20240521 TIL 내일배움캠프 #36일차 🟢 요약 @RestController = @Controller + @ResponseBody @RestController를 사용하면 해당 클래스의 모든 메서드에 @ResponseBody 애너테이션이 추가되는 효과를 부여 🟡 @Controller 주로 뷰를 반환하기 위해 사용JSP, Thymeleaf, Freemarker와 같은 템플릿 엔진을 사용해 HTML을 생성하는 경우에 사용메서드에서 반환된 문자열은 뷰의 이름으로 해석되며, 해당 뷰를 렌더링하여 클라이언트에게 반환 🟡 @RestController RESTful 웹 서비스를 구축하기 위해 사용주로 JSON 또는 XML 형식의 데이터를 반환@RestController는..
🚩 20240520 TIL 내일배움캠프 #35일차 🟠 Content-Type란? 데이터의 표현 형식을 나타내는 것 예시 :text/plain : 일반 텍스트 데이터임을 의미application/json : JSON 형식의 데이터임을 의미클라이언트는 Content-Type 헤더를 보고 응답 데이터를 어떻게 해석해야 하는지 알 수 있다.text/plain은 그대로 텍스트로 표시하고,application/json은 JSON 파서를 사용하여 구조화된 데이터로 해석한다. 🟠 Content-Type은 어떻게 결정될까? Content-Type의 차이는 반환되는 값의 타입에 따라 결정 예시 :문자열 Stiring을 반환하면 Content-Type은 text/plainStar 객체를 반환하면 Content-Type..
🚩 20240517 TIL 내일배움캠프 #32일차 🔴 문제(...생략)@Controller@RequestMapping("/response")public class ResponseController {@GetMapping("/json/class") public Star helloClassJson() { return new Star("jinny", 22); }} 위 코드 실행 시 Error resolving template [response/json/class], template might not exist or might not be accessible by any of the configured Template Resolvers 🟠 분석템플릿이 없다는 오류가 발생. HTML반..