스프링에서는 일반적인 Java객체를 new로 생성하여 개발자가 관리하는 것이 아닌, Spring Container에 모두 맡긴다.개발자 -> 프레임워크로 제어의 객체 관리 권한이 넘어갔기 때문에 이를, "제어의 역전"이라고 한다.DI의 장점의존성으로부터 격리시켜 코드테
관점지향 프로그램스프링 어플리케이션은 특별한 경우를 제외하고, MVC 웹 어플리케이션에서 Web Layer, Business Layer, Data Layer로 정의된다.Web Layer : REST API를 제공하며, Client중심의 로직 적용Business Laye
스프링 시큐리니 프레임워크에서 제공하는 클래스 중 하나로 비밀번호를 암호화하는데 사용할 수 있는 메서드를 가진 클래스이다.스프링 시큐리티란 자바 서버 개발을 위해 필요로 한 인증, 권한 부여 및 기타 보안 기능을 제공하는 프레임워크(클래스와 인터페이스의 모임)이다.BC
객체지향이란 현실에 존재하는 사물을 있는 그대로 모델링하여, 이들의 행위와 속성을 정의하고 절차적이 아닌 객체가 중심이되어 실제 사물이 동작하는 방식으로 설계하는 방법사물은 객체라고 부르며, 사물이 하는 행위를 메소드로 정의하고 해당 사물이 가지는 속성을 변수라고 정의
캡슐화는 객체의 속성을 보호하기 위해 사용예로, 컴퓨터 본체안에는 많은 부품들로 구성되어 있지만 전원을 켜기 위해서 메인보드에 전기 신호를 직접 주는 것이 아닌, 외부 전원 버튼을 통해 상태 속성을 변경한다.메소드 설계속성이 선언되었으나, 이의 상태를 변경하는 메소드가
MVC패턴에서 ServiceImpl은 비지니스로직을 수행하는 역할을 말한다. 여기서 말하는 비지니스로직이란, 기능을 구현하는 구현부이다. 비지니스 로직을 수행하기 위해 Service는 interface파일로 ServiceImpl은 class파일로 작성한다.MVC패턴의
좋은 소프트웨어 설계를 위해서는 결합도는 낮추고 응집도는 높여야한다.결합도모듈간의 상호 의존 정도를 나타내는 지표로써 결합도가 낮으면 모듈간의 상호 의존성이 줄어들어 객체의 재사용 및 유지보수가 유리하다.응집도하나의 모듈 내부에 존재하는 구성 요소들의 기능적 관련성으로
Client, Server: 클라이언트와 서버가 서로 독립적으로 분리되어 있어야 한다.Stateless: 요청에 대해서 클라이언트의 상태를 서버에 저장하지 않는다.Cache: 클라이언트는 서버의 응답을 Cache할 수 있어야 한다. 클라이언트가 Cache를 통해 응답을
인터넷에서 특정 자원을 나타내는 주소 값이 값은 유일하다.요청: https://www.google.com/resource/sample/1응답: document.pdf인터넷 상에서 자원, 특정 파일이 어디에 위치하는지 식별하는 주소요청: https://
HTTP는 메시지를 주고 받는 형태의 통신 방법Client => Server, Server => Client (Request, Response)GET: 리소스 취득POST: 리소스 생성, 추가PUT: 리소스 갱신, 생성DELETE: 리소스 삭제HEAD: 헤더 데이터 취
MVC패턴의 구조는 Model, View, Controller로 구성된다.모델은 어떤한 동작을 수행하는 코드를 이야기한다. 우리가 무엇을 할지를 정하고 비지니스 로직과 DB등에 대한 처리를 수행한다.컨트롤러는 뷰와 모델을 이어주는 역할을 맡는다. 뷰의 요청에 따라 모델
HyperText Transfer Protocol의 준말로 링크 기반으로 데이터를 요청하고 받겠다는 것을 의미한다.클라이언트와 서버가 요청을 하고 응답을 하기 위해 따르는 프로토콜이다.HTML문서를 주고 받을 수 있을 뿐만 아니라, 이미지, 동영상 등을 주고 받을 수
스프링 프로젝트를 생성하면 src/main/resource디렉토리에 리소스 파일을 저장하게 되어있다. 컴파일 대상이 되는 소스파일이 아닌 파일들을 리소스 디렉토리에 저장하여 관리한다.프로젝트를 빌드하면 리소스 파일은 CLASS_PATH에 위치하게 된다.스프링 프레임워크
Validation은 프로그래밍에 있어서 가장 필요한 부분이다. 특히 Java에서는 null값에 대해서 접근하려고 할 때 null pointer exception이 발생함으로써 이러한 부분을 방지하기 위해 미리 검증을 하는 과정을 Validation이라 한다.검증해야
Web Application의 입장에서 바라 보았을 때, 에러가 났을 때 내려줄 수 있는 방법은 많지 않음에러 페이지4XX Error or 5XX ErrorClient가 200외에 처리를 하지 못할 때는 200을 내려주고 별도의 에러 메세지 전달@ControllerA
Filter란 Web Application에서 관리되는 영역으로써 Spring Boot Framework에서 Client로 부터 오는 요청/응답에 대해 최초/최종 단계의 위치에 존재하며, 이를 통해서 요청/응답의 정보를 변경하거나 Spring에 의해서 데이터가 변환되기
웹 서버클라이언트가 서버에 페이지를 요청하면 이 요청을 받아 정적 컨텐츠(html, css, png)를 제공하는 서버클라이언트에서 요청이 올 때 가장 앞에서 요청에 대한 처리를 한다.클라이언트의 요청을 기다리고 요청에 대한 데이터를 만들어서 응답하는 역할WAS동적 컨텐
세계에서 가장 많이 쓰는 웹 서버 중 하나이며, 아파치 소프트웨어 재단에서 관리하는 HTTP 웹 서버이다.Apache는 Apache재단에서 만든 HTTP서버로 다양한 추가 기능 + 구축이 쉽다는 장점 때문에 많이 사용하고 있다.톰캣은 아파치 소프트웨어 재단의 웹 어플리
테스트 주도 개발에서 사용하지만, 코드의 유지 보수 및 운영 환경에서의 에러를 미리 방지하기 위해서 단위별로 검증하는 테스트 프레임워크작성한 코드가 기대하는대로 동작을 하는지 검증하는 절차Java기반의 단위 테스트를 위한 프레임워크Annotation기반으로 테스트를 지
Swagger란 개발한 REST API를 편리하게 문서화 해주고, 이를 통해서 관리 및 제 3의 사용자가 편리하게 API를 호출해보고 테스트 할 수 있는 프로젝트이다.Spring Boot에서는 간단하게 springfox-boot-starter를 gradle depend
마이바티스는 기존의 JDBC를 이용하여 개발하는 방식에 비해 개발자의 부담을 덜어 주고 생산성을 향상시켜준다. JDBC를 이용하여 프로그래밍을 하는 방식은 클래스나 JSP와 같은 코드 안에 SQL문을 작성하는 방식이였다. 따라서 SQL의 변경 등이 발생할 경우 프로그램
롬복은 자바 클래스를 만들 때 흔히 만드는 코드들을 어노테이션을 이용해 자동으로 만들어주는 라이브러리이다. 흔히 만드는 코드란 DTO와 같은 모델에서 항상 만들게 되는 getter, setter메서드나 상황에 따라 자주 만드는 toString, hashCode와 같은
애플리케이션 내의 각 계층 간 데이터를 주고받는 데 사용되는 객체, 각 계층이란 뷰, 컨트롤러, 서비스, DAO, DB등을 의미한다.
몇 년 전까지 자바 프로젝트에서 가장 많이 사용되는 로그 라이브러리는 Log4j였다. 지금은 개발이 종료되기는 했지만 Log4j는 자바의 예외를 처리하기위해 시작된 프로젝트였다. Log4j의 개발자는 로거에 대해 좀 더 깊은 프로젝트를 시작했고 그 결과 Log4j를 토
Spring에서 컨트롤러를 지정해주기 위한 어노테이션은 @Controller와 @RestController가 있다. 위 두 컨트롤러의 핵심적인 차이점은 HTTP ResponseBody가 생성되는 방식이다. 이번 글을 통해 두 가지 방식에 대한 차이점을 알아보자!전통적인
findByEmailAndName: 이메일과 이름을 통해 쿼리문을 조회 (이메일과 이름이 모두 존재하는 쿼리문 결과를 리턴)findByEmailOrName: 이메일과 이름을 통해 쿼리문을 조회 (이메일과 이름 중 하나의 데이터가 존재하는 쿼리문 결과를 리턴)findBy