728x90

Spring 9

[Java] 디스패치 서블릿 DispatcherServlet이란?

Dispatcher-Servlet(디스패처 서블릿) 이란? 디스패처 서블릿의 dispatch는 "보내다"라는 뜻을 가지고 있다. 그렇기 때문에 Dispatcher-Servlet은 HTTP 프로토콜로 들어오는 모든 요청을 가장 먼저 받아 적합한 컨트롤러에 위임해주는 프론트 컨트롤러(Front Controller)라고 정의할 수 있다. 이 과정을 이해하기전에 앞서 클라이언트로부터 어떠한 요청이 들어오게되면 톰캣과 같은 서블릿 컨테이너가 요청을 받게 된다. 그리고 이 모든 요청을 프론트 컨트롤러인 디스패치 서블릿이 가장 먼저 받게 된다. 그러면 디스패치 서블릿은 공통적인 작업을 먼저 처리한 후에 해당 요청을 처리해야하는 컨트롤러를 찾아서 작업을 위임하게 된다. 여기서 프론트 컨트롤러는 주로 서블릿 컨테이너의 ..

JAVA 2022.04.11

[Java] Spring 토비의 스프링

정리 - 예외를 잡아서 아무런 조취를 취하지 않거나 의미 없는 throws 선언을 남발하는 것은 위험. - 예외는 복구하거나 예외처리 오브젝트로 의도적으로 전달하거나 적절한 예외로 전환 - 좀 더 의미 있는 예외로 변경하거나, 불필요한 catch/throws를 피하기 위해 런타임 예외로 포장하는 두 가지 방법의 예외 전환 - 복구 할 수 없는 예외는 가능한 빨리 런타임 예외로 전환하는것이 바람직 - 애플리케이션의 로직을 담기 위한 예외는 체크 예외로 만듬 - JDBC의 SQLException은 대부분 복구 할 수 없는 예외이므로 런타임 예외로 포장해야함 - SQLException의 에러코드는 DB에 종속되기 때문에 DB에 독립적인 예외로 전환될 필요가 있음 - 스프링은 DataAccessException..

JAVA 2021.07.26

[Spring] 스프링 핵심 원리 - 기본편(1)

https://start.spring.io/ 주소를 통해서 스프링 초기 Setting을 할 수 있음. Project Metadata 부분에서 Artifact는 프로젝트의 빌드명이 된다. 윈도우 기준 Settings에서 Gradle를 검색하면 Gradel Projects를 설정 할 수 있다. Build and run using 과 Run tests using을 InjelliJ IDEA로 설정해주면 실행해주는 속도를 빠르게 할 수 있을 것이다. Q. 인터페이스를 사용하는 목적? 인터페이스를 사용하는 가장 큰 목적은 선언과 구현을 분리하기 위함. 그래서 사용하는 입장에서 인터페이스만 의존하고, 구현을 모르도록 하는 것. 그래야 향후 구현을 했을때, 클라이언트 코드를 변경하지 않아도 되기 때문. 인터페이스를 사..

JAVA 2021.07.13

[Spring] 1장 오브젝트와 의존관계(4)

[Spring] 1장 오브젝트와 의존관계(3) [Spring] 1장 오브젝트와 의존관계(2) [Spring] 1장 오브젝트와 의존관계(1) 스프링이란? 개발에 사용되는 애플리케이션 프레임워크. 개발을 빠르고 효율적으로 할 수 있도록 틀과 프로그래밍 모델, 기 itkjspo56.tistory.com public class UserDao{ private ConnectionMaker connectionMaker; public UserDao(ConnectionMaker connectionMaker){ this.connectionMaker = connectionMaker; } ... } DI컨테이너는 자신이 결정한 의존관계를 맺어줄 클래스의 오브젝트를 만들고 이 생성자의 파라미터로 오브젝트 레퍼런스를 전달. 바로..

JAVA 2021.06.10

[Spring] 1장 오브젝트와 의존관계(2)

[Spring] 1장 오브젝트와 의존관계(1) 스프링이란? 개발에 사용되는 애플리케이션 프레임워크. 개발을 빠르고 효율적으로 할 수 있도록 틀과 프로그래밍 모델, 기술 API 등을 제공 1) 애플리케이션 기본틀 - 스프링 컨테이너 독립적으 itkjspo56.tistory.com 지난 시간에 이어서... [관계설정 책임의 분리] public UserDao(ConnectionMaker connectionMaker){ this.connectionMaker = connectionMaker; } 수정한 생성자의 모습. 이전의 DConnection이 사라진 이유는 DConnectionMaker를 생성하는 코드 UserDao와 특정 ConnectionMaker 구현 클래스의 오브젝트 간 관계를 맺는 책임을 담당하는 ..

JAVA 2021.06.08

[IntelliJ] 인텔리제이 Could not target platform 에러 해결방법

IntelliJ를 처음에 Setting을 할때, 예상지 못한 오류가 나와서 잠시 적어본다. ※ 운영체제 Window 10 Pro 기준 에러문구는 바로 Execution failed for task ':compileJava' -> Could not target platform: 'Java SE 11' using tool chain: 'JDK 8(1.8)'. 대략 문구를 보니 자바 11을 써야하는데 자바 8버젼 때문에 뭔가 문제가 있는거 같다. 이클립스를 사용할때는 주로 8버젼을 썼는데, 인텔리제이로 넘어오면서 자바 11을 본격적으로 사용해보고자 한다. 인텔리제이에서 처음 보는 문구여기 여기저기 찾아보면서 JDK11의 설정이 제대로 되어있는지 확인해보았다. 1) File -> Project Structure..

오류 모음집 2021.03.09

[Java] NoClassDefFoundError

NoClassDefFoundError 같은 이런 종류의 에러는 보통 라이브러리 의존성 문제이거나 Maven이 제대로 라이브러리를 가져오지 못하는 경우에 발생된다. 우선적으로 메이븐 레파지토리를 초기화를 하는것이 좋다. 프로젝트 우클릭 -> Maven -> UpdateProject 선택 이후 하단에 Force Update 부분도 체크하여 마무리한다. 이후 저장소를 초기화 후에 재가동해보는것이 좋음.

오류 모음집 2020.09.07

[Mybatis] Error querying database. Mapped Statements collection does not contain value for

PostreSQL과 Java의 Springframework를 이용해 연결하는 도중 발생된 오류 왜 이러한 오류가 발생될까 분석을 해보았다. 1. mapper의 id가 다른 경우 xml파일의 id와 dao의 id가 혹시나 다를 경우 2. 파라미터와 bean의 필드명이 다를 경우 3. mapper 파일에 등록된 namespace와 직접 접근 근하는 namespace가 다를 경우(dao or service) 4. mapper에 정의된 namespace가 중복되는 경우 5. MyBatis config 파일에 정의가 되어 있지 않거나 스펠링이 틀린 경우 등 찾아보니깐 여러 가지 이유가 있는 것 같았다. 그래서 내가 진행하는 것의 오류는... 5번에 해당되는 사항이었다. ㅎㅎ 하지만 mybatis config를 설..

오류 모음집 2020.08.31
728x90