분류 전체보기 149

Parameter 0 of constructor in 컨트롤러 클래스 required a bean of type '클래스 이름' that could not be found. 스프링 에러

빈이 정상적으로 등록되지 않았을때 발생하는 문제다. 문제 원인은 대부분 다음과 같다. 1. @Service, @Repository 같은 어노테이션을 안붙임. 2. @Component 을 붙여주거나 직접 @Configruation 클래스에서 @Bean 어노테이션을 이용해 빈으로 등록 3. Application 실행 클래스 하위 패키지에 빈 클래스를 생성 -> 내 케이스 나는 3번의 케이스, 즉, @ComponentScan 대상이 아닌 패키지에 클래스를 생성한 것이 문제였다.

에러 기록 2024.01.27

org.hibernate.validator.spi.scripting.ScriptEvaluatorNotFoundException: HV000232: No JSR 223 script engine found for language "javascript". 에러 - 스프링

@ScriptAssert 를 사용할시 다음과 같은 오류가 발생한다. 원인: JDK8 ~ 14까지는 Javascript를 지원하는 Nashorn 엔진을 쓰지만, JDK14 이후부터는 Javascript가 지원되지 않는 GraalVM을 사용하기 때문이라고 한다. 뭔 소리인지 정확히 모르겠지만 JVM 버전이 높아서 터진 문제다. 해결: JVM을 낮추는 것은 간단하지만 위험한 해결법이고, 스프링 부트 3.x 버전 이상부터는 무조건 jvm 17이상을 사용해야 하기에 낮출수도 없다. dependencies { implementation 'org.openjdk.nashorn:nashorn-core:15.3' } 이런 식으로 디펜던시를 추가하면 해결된다.

에러 기록 2024.01.12

General error during semantic analysis: Unsupported class file major version 61 에러

외부에서는 잘 실행되던 스프링 프로젝트가 집에서 실행하니 이런 오류가 발생했다. 원인: 이 에러는 gradle과 jdk의 버전이 맞지 않아서 생기는 에러라고 한다. 자세한 사항은 공식 문서를 참조하자. 강의를 들으면서 제공한 프로젝트를 그대로 가져왔는데, 그로 인한 환경설정 차이가 일어난 것이다. 해결법: jdk 15 버전을 다운받아 적용시켜 해결했다. intellij 에서 자동으로 다운되는 azul - 15 버전을 이용했다.

에러 기록 2024.01.10

SpringMVC(3) : 서블릿 요청에 대한 응답

이 게시글에서는 사용자의 요청을 듣고, 서버가 응답해주는 방법을 정리한다. 사용자의 응답 역시 HTTP 메시지 형식인데, 이를 손쉽게 만드는 방법에 대한 내용이다. HTTP 메시지 header 만들기 @WebServlet(name = "responseHeaderServlet", urlPatterns = "/response-header") public class ResponseHeaderServlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //[status-line] respo..

공부/springboot 2023.12.11

SpringMVC(2) : 서블릿 요청 처리

서블릿은 HTTP 통신을 더 쉽게 사용하기 위해 만들어진 자바 기능이다. 따라서 이를 이용한 HttpServletRequest 와 HttpServletResponse 역시 정보를 더 쉽게 추출해내거나 삽입하는 기능을 가지고 있다. 이 게시글에서는 HttpServletRequest 를 이용해 HTTP 요청 메시지의 내용을 꺼내는 다양한 방법과 HttpServletResponse를 이용해 다양한 방식으로 응답을 보내고 쿠키 등의 부가 설정을 하는 방법을 살펴볼 것이다. HTTP 메시지의 구조 HTTP통신을 다루는 기술인만큼 HTTP 통신의 기본 규약을 알아야할 필요가 있다. 이 게시글에서는 오직 http 메시지의 구조만 잠깐 흩고 지나갈것이다. http 통신에 대한 더 깊은 이해를 바라면 이전 게시글을 참조..

공부/springboot 2023.12.08

SpringMVC(1) : 웹 어플리케이션 서버(WAS) 의 이해

웹 서버(Web Server)와 웹 어플리케이션 서버(Web Application Server) 이 둘의 경계는 모호하나 굳이 구분하면 정적인 웹 서버와 동적인 웹 어플리케이션 서버로 나눌수 있다. 정적인 서버는 오직 정적 리소스만 제공하며, 따라서 html, css, js 파일, 이미지 등을 클라이언트에게 전송해주나, DB에 저장된 데이터 등을 이용해 그에 맞는 화면을 클라이언트에게 전송해주는 것은 불가능하다. 반대로 was는 프로그램 코드를 실행하여, 애플리케이션 로직을 수행 그에 맞는 화면을 보여주거나 행동을 하는 것이 가능하다. 웹 어플리케이션 서버가 웹 서버의 개념까지 포함하여 더 많은 기능을 제공한다고 생각하면 편하다. 일반적으로 웹 시스템은 웹 서버 => 웹 어플리케이션 서버 => DB 로 ..

공부/springboot 2023.12.06

MyBatis 란?

기존에 SpringDataJPA만 사용해오다 이번 기회에 MyBatis를 사용할수 있게 되었다. 마이바티스 역시 근본적으로는 JPA와 마찬가지로 프로세스에서 DB에 더 쉽게 접근하기 위한 기술이다. 이 역시 JPA와 마찬가지로 JDBC를 근간으로 한다. 세계적으로는 우리나라와 중국, 일본 정도에서만 주류로 사용되며, 그 외의 국가들은 대부분 JPA(Hibernate) 가 대세이다. 그 이유는 간단한 쿼리문 작성에 JPA가 훨씬 강력한 성능을 뽐내기 때문인데, 반대로 복잡한 쿼리문에서는 MyBatis가 더 강하다. 또한 Persistence Framework 를 통해 데이터베이스와 연동 기술을 개발하는데, MyBatis 는 SQL Mapper 방식, JPA는 ORM(Object Relational Mapp..

공부/MyBatis 2023.10.23

ConnectException: Connection refused : 로컬 파일에 접근할때

로컬 파일에 접근해서 apiKey 를 가져오는 코드를 짰으나 두가지 원인으로 막혔다. 1.UnknownHostException : home 이는 리눅스에 home 에 대한 정보가 등록되어 있지 않아 home으로 접속하려고 할때 어떠 ip주소로 접근해야 하는지 몰라서 발생하는 오류다. home은 로컬을 말함으로 리눅스 서버 자신의 ip주소를 등록해주면 된다. 먼저 관리자 권한으로 변경한 다음 최상위 폴더로 이동, /etc 내부에 있는 hosts 파일에 수정 권한을 부여하고, {ip 주소} {이름} 방식으로 설정해줄수 있다. 참고주소 : https://velog.io/@_koiil/%EB%A6%AC%EB%88%85%EC%8A%A4-java.net.UnknownHostException 리눅스 java.net...

카테고리 없음 2023.10.22