![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/b6U7dk/btspgnEYIxU/l1AlNH1UgriSye8KvdJuK0/img.png)
{ "timestamp": "2019-02-15T22:24:41.275+0000", "status": 404, "error": "Not Found", "message": "No message available", "path": "/123", "nice": "springboot" } 에러 처리는 애플리케이션 개발에 있어 여러 오류를 빠르게 파악하고 수정하는데 있어 유용하게 사용되어 의무가 아닌 필수가 되었다. 기본적으로 스프링부트 애플리케이션을 만들고 실행하면 404 Not Found에 대해서 다음과 같은 화면을 볼 수 있다. 같은 요청 localhost:8080/123에 대해서 포스트맨을 사용하여 JSON 응답값을 확인해보면 다음과 같다. { "timestamp": "2023-08-14T22:21:24...
스프링 빈은 기본적으로 클래스 이름과 프로퍼티로 정의된다. 스프링은 지정된 클래스 이름을 가지고 리플렉션을 이용해서 해당 클래스의 오브젝트를 만든다. 클래스의 이름을 갖고 있다면 다음과 같은 방법으로 새로운 오브젝트를 생성할 수 있다. Class의 newInstance() 메소드는 해당 클래스의 파라미터가 없는 생성자를 호출하고 그 결과 생성되는 오브젝트를 돌려주는 리플렉션 API 이다. Date now = (Date) Class.forName("java.util.Date").newInstance(); 스프링은 내부적으로 리플렉션 API를 이용해서 빈 정의에 나오는 클래스 이름을 가지고 빈 오브젝트를 생성한다. 클래스 정보를 가지고 디폴트 생성자를 통해 오브젝트를 만드는 방법 외에도 빈을 만들 수 있는 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bSdLPs/btsbQyxJ38r/yBbAE4ANLfY6OLRG9cRaz1/img.png)
@Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Indexed public @interface Component { String value() default ""; } 스프링에서 제공하는 Component를 보자. 스프링은 @Component를 등록하여 bean을 만드는 방법이 있다. 스프링은 ComponentScan으로 Component가 달려있는 Service, Repository 등을 스캔한다. 나는 이게 궁금했다. 이 Component에 대한 의구심이 들었고 그 전에 어노테이션은 어떻게 만드는지 부터 확인할 필요가 있었다. @Documented : Java doc에 문서화 여부를 결정 @Retention : ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bTIgpd/btrSsRjMP7p/y0142A5gnG0DNrIdD7eNKk/img.png)
Spring framework를 통해서 개발자들의 겨울은 끝났다............? Spring이 봄(?)이라면 SpringBoot는 여름(?)이다. (봄보다 여름이 좋다는 가정) 이전에 봄이 찾아오던 과정 => Spring 이전 Servlet과 비교하는 글 https://sh970901.tistory.com/111 스프링부트는 스프링 기반 애플리케이션을 단독적이고 상용화 수준으로 만들 수 있고 그냥 실행시키면 된다. 아주 간단하다는 걸 표현하는 것 같다. 스프링은 모든 dependency를 버전 정보까지 정확하게 작성하여야 원하는 기능을 사용할 수 있는데 스프링 부트는 버전 관리를 권장 버전으로 자동 설정된다. implementation 'org.springframework.boot:spring-b..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bimMBO/btrSwsCVfBR/BIWVaBmVAk5kawGuwtCMtk/img.png)
처음 웹 서버는 정적인 요청에 대한 응답만 가능했다. 동적인 페이지를 만들기 위해 프로그램을 붙였고 대표적인 것이 서블릿이다. 초기에는 CGI 구현체를 활용했지만 요청마다 새로운 프로세스를 만드는 것은 너무 비효율적이였다. 그래서 하나의 싱글톤 CGI 구현체를 사용함으로써 스레드로 처리할 수 있게 되었고 이것이 현재의 서블릿이 된 것이다. Spring Web MVC는 서블릿을 사용한다. 그럼 이 둘을 비교하는게 맞을까도 싶다. 그래서 서블릿과 서블릿을 사용한 Spring Web MVC에 대해 기록해보려고 한다. 그림과 같은 http 요청과 응답을 개발자가 직접 처리하기 위해 응답을 만들고 하는 과정을 거친다면 힘들 것이다. 모든 규약을 확인해가며 긴 텍스트로 들어온 요청을 분석하고 거기에 맞는 처리를 하..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/VaRoj/btrMmhuXkjV/giCvPtBNCvXycsgEArTju0/img.png)
스프링 빈이란? 스프링 빈은 스프링 컨테이너에 의해 관리되는 자바 객체(POJO)를 의미한다. 스프링의 특징에는 제어의 역전(IoC)이 있다. https://sh970901.tistory.com/42?category=954625 스프링 IoC 컨테이너 (Inversion Of Control) 무엇인가? Inversion Of Control ⇒ 제어의 반전 IoC(제어 반전)이란, 객체의 생성, 생명주기의 관리까지 모든 객체에 대한 제어권이 바뀌었다는 것을 의미합니다. 스프링 프레임워크도 객체를 생성하 sh970901.tistory.com 제어의 역전이란, 간단히 말해서 객체의 생성 및 제어권을 사용자가 아닌 스프링에게 맡기는 것이다. 지금까지는 사용자가 new연산을 통해 객체를 생성하고 메소드를 호출했다..