본문 바로가기

Spring

(16)
Spring Web Layer 알아보기 스프링 부트를 통해 Lombok, JPA를 활용한 간다한 CRUD API를 만드는 과정에서 Spring Web Layer에 대해 정확하게 이해하는 것이 큰 도움이 될 것 같아 Spring Web Layer를 공부해보았습니다. 그럼 시작하겠습니다. 웹 어플리케이션을 효과적으로 개발하기 위해서 선배 개발자 분들은 아키텍처란 것에 관심을 가지게 됩니다. SoC(Separation of Concerns)의 관심사 분리라는 원칙, KISS(Keep It Simple Stupid)라는 간단하고 알기 쉽게 만들라는 원칙을 지키는 것이 아키텍처 디자인을 설계하는데 지켜야 할 기본 원칙이라고 보면 되겠습니다. 다시 말해서, 관심사를 식별하고 어디서 처리해야 할지 결정해야 하며 간단하고 알기 쉽게 만드는 것이다!라고 저는..
SpringBoot - ExceptionHandler 스프링 부트에서는 ExceptionHandler기능을 제공합니다. 스프링 부트로 공부를 하다 보면 위와 같은 에러 페이지를 많이 보지 않으셨나요? 위의 에러페이지는 에러가 발생했을 때 스프링 부트가 기본으로 제공하는 에러 핸들러가 처리하는 결과입니다. 이러한 에러 핸들링에 대한 로직은 BasicErrorController에서 확인 할 수 있습니다! (나중에 자세히 확인해보기) 이 글에서는 예제를 통해 ExceptionHandler를 만들어보도록 하겠습니다. 컨트롤러를 하나 만들어서 localhost:8080/hello로 클라이언트가 요청했을 때, UserException()을 발생시키도록 했습니다. UserException()은 제가 직접 만든 Exception이니까 따로 클래스로 만들어 줘야 합니다. ..
[토이 프로젝트] IT Article - 1 토이 프로젝트로 IT 기사를 크롤링하여 보여주는 웹 페이지를 만들어보기로 했습니다. 여러 사이트에서 IT 기사를 크롤링하여 보여주고 사용자가 스크랩? 즐겨찾기?를 하게 되면 추후에도 그 기사를 마이페이지에서 쉽게 볼 수 있게 만들려고 생각 중입니다. 현재 생각하는 구조는 아래 그림과 같습니다. 아래는 폴더 구조입니다. MVC 패턴으로 만들고 있고 현재는 login 부분까지 구현을 완료했습니다. 코드는 아래 주소에서 확인하실 수 있습니다. https://github.com/electricline/springboot-itarticle/tree/master/springboot-itarticle electricline/springboot-itarticle 스프링부트 토이프로젝트. Contribute to ele..
Spring WEB MVC와 HttpMessageConverters MVC 패턴이란 말은 스프링부트를 공부하다보면 자연스럽게 많이 들을 수 밖에 없는 이야기 같습니다. 저 역시 스프링부트를 처음 공부하면서 MVC 패턴을 접했고 이해하기 위해 많은 자료들을 참고했습니다. 그만큼 많은 사람들이 스프링 또는 부트에서 MVC 패턴을 활용한 서비스를 제작하고 있는거라 생각하면 되겠습니다. Spring WEB MVC 스프링부트 프레임워크에서는 이러한 MVC 패턴을 별도의 설정없이 바로 개발을 시작할 수 있도록 도와줍니다. 그 이유로는 AutoConfiguration을 통한 자동설정 지원에 있습니다. spring-boot-autoconfigure -> META-INF -> spring.factories spring.factories -> WebMvcAutoConfigutration ..
SpringApplication이 제공해주는 여러 다양한 기능들 ( 백기선님 강의 참조) 1. Application Events and Listener SpringApplication은 몇몇 추가 어플리케이션 이벤트들을 제공합니다. SampleListener를 만들어서 이벤트가 발생하면 리스너가 실행되도록 해보겠습니다. SampleListener import org.springframework.boot.context.event.ApplicationStartingEvent; import org.springframework.context.ApplicationListener; public class SampleListener implements ApplicationListener { @Override public void onApplicationEvent(ApplicationStartingEven..
IntelliJ로 스프링 부트 프로젝트 생성 및 설정 ( Maven ) 스프링 부트를 위한 프로젝트 생성 방법입니다. 1. Maven으로 프로젝트를 생성 2. pom.xml에 기본적인 Setting 추가 메이븐에는 프로젝트 간의 계층 구조를 만들 수 있습니다. 태그를 통해 아래와 같은 계층 구조를 만들어 줍니다. -> 스프링 부트의 의존성 관리에 핵심적인 부분 웹 어플리케이션을 위한 디펜던시와 빌드 툴을 추가해주면 기본적인 셋팅이 완료됩니다. org.springframework.boot spring-boot-starter-parent 2.0.3.RELEASE org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-maven-plugin 3. 패키지와 클래스 생성 src > ma..
JPA, ORM, Hibernate란? JPA(JAVA PERSISTENCE API) 자바에서 제공 하는 인터페이스로 ORM 기술에 대한 명세서 관계형 데이터베이스를 사용하는 방식을 나타내고 있다. ORM이므로 자바 클래스와 DB table을 Mapping 합니다. ORM은 뭔가..?(Object-relational mappping) 객체와 관계와의 설정입니다. 객체란 OOP에서 말하는 객체이며 관계는 관계형 데이터베이스 사용하는 그 관계입니다. ORM을 통해 관계형 데이터베이스의 관계를 객체(Object)에 반영하여 조금 더 객체지향에 근접한 프로그래밍을 위해 나온 기술입니다. Hibernate란?? 하이버네이트는 JPA 구현체의 한 종류입니다. JPA는 자바에서 제공하는 인터페이스로 ORM 기술에 대한 명세서라고 했습니다. 이 JPA 인터..
Springboot의 의존성 관리 스프링부트 디펜던시는 버전을 입력하지 않아도 의존성 관리를 해줍니다. 이전에 안드로이드 개발을 경험할 때 모든 버전을 하나씩 작성해줘야 하는 것이 번거롭고 어려웠는데 스프링 부트는 스프링부트 스타터 페어렌트에서 모든 의존성을 관리해줍니다. (물론 예외는 있습니다.) 스프링부트 프로젝트의 parent form에 가서 타고 올라가게 되면 spring-boot-starter-parent -> spring-boot-dependencies pom으로 이동할 수 있는데 여기에서 스프링부트가 모든 의존성관리를 자동으로 해주는 것을 확인할 수 있습니다. 그러므로 저 pom에서 하나라도 사용하게 되는 디펜던시는 우리가 버전을 명시하지 않아도 자동으로 의존성 관리가 됩니다. 이 방식의 장점때문에 개발자가 직접 관리해야 하..