Spring

myGoodPlace
[Spring] @Valid를 사용한 유효성 검사는 어디서하는걸까?
유효성 검사가 무엇일까? 무엇인지 알겠는데, 회원가입할 때 로그인 할 때.. 쓰는 그거..가 아니라 정확히 어떻게 표현하면 좋을까? 유효성 검사는 데이터가 서버에서 잘 작동하기 위해서, 서버가 정한 조건에 맞는지 확인하는 것이다. 프론트엔드를 통해 요청 온 데이터의 유효성은 어디서 검사하는 것이 더 좋아? Controller? Service? Repository? 서버에서 잘 작동한다는 것은 비즈니스 로직을 수행하는데 문제가 없다는 것이다. 그럼 로직 수행 전에 문제가 없는지 확인해야 할 필요가 있지 않을까? 비즈니스 로직을 수행하는 곳이 서비스니까, 컨트롤러에서 들어온 요청에 따른 데이터가 올바른지 확인해주면 될 것 같다는 결론이 나왔다! 그럼 유효성 검사는 어떻게 해? 컨트롤러에서 유효성 검사를 해줄..
[Spring] Servlet이랑 DispatcherServlet
서블릿(Servlet)을 알아보고, 디스패처서블릿(DispatcherServlet)을 알아보겠습니다! init, doGet 과 메서드를 수행해서 요청을 받는게 서블릿인데, 정확히 서블릿이 뭐지?! 그럼 디스패처 서블릿은 뭐가 다르다는거지? 스프링에서 사용하는거니까 서블릿을 상속받긴 했을텐데,, 라는 궁금증을 가지고 공부해본 것을 공유해보고자 합니다! 웹은 HTML로 시작되었는데, HTML은 Hyper Text Markup Language의 약어로, 텍스트에 초능력이 있다라는 의미가 담겨있습니다. 왜 초능력이 있다고 표현한걸까요? 그 이유는 바로, 링크를 통해 다른 곳으로 연결되어 있기 때문입니다. 우리가 처음 사용했던 웹페이지는 모두 정적 페이지였습니다. 정적이란 뭘까요? 바로, 요청에 의해 페이지의 내..
[Spring] SpringContext와ApplicationContext는 같은걸까?!
보호되어 있는 글입니다.
[Spring] Bean관리 누가할래? in TEST (@SpringBootTest @Test 알고 쓰기)
@SpringBootTest 와 @Test의 가장 큰 차이는 Bean 관리 주체입니다. @SpringBootTest는 컴포넌트(Component)로 등록된 빈(Bean)을 관리하는 스프링 컨텍스트(Spring Context)를 로드한 후 테스트를 검증하기 때문에, 스프링이 의존 관계를 연결(DI)할 수 있습니다. @Test는 이러한 스프링 컨텍스트의 사용 없이, 테스트를 검증하기 때문에, 의존 관계를 연결할 수 없어 개발자가 직접 의존관계가 있는 빈을 연결해줘야 합니다. @SpringBootTest 어노테이션을 달면, 스프링 컨텍스트를 로드한 후부터 테스트를 검증할 수 있습니다. 그래서 짧은 테스트 코드를 작성하였더라도, 레포지토리(Repository)가 존재한다면 Database까지 모두 정상적으로 연..
[JAVA] JPA는 무엇일까?
지금까지 저는 JPA가 Spring(이하 스프링)의 기술이라고 생각했습니닷! 그래서 아.. 스프링 못하니까 JPA는 어림도 없겠지.. 라며 엄두도 못냈었죠..ㅎㅎ 알고보니, JPA는 JAVA의 기술이었습니다!! Spring에서 사용하는 JPA는 Spring Data JPA인데 우리가 줄여서 JPA라 부르는 것일뿐..!그럼 JPA가 무엇인지, 어떻게 Database에 객체를 저장할 수 있는지 제가 이해한 것을 함께 나눠보도록 하겠습니다!JPA란 무엇인가JPA란 Java Persistence API의 축약어입니다.자바 Persistence API..? 자바 Persistence하는 API..? Persistence..? 이게 영속성인 것 같은데..사전을 찾아봤습니다.아, 영속이라는 말대신 지속이라는 말로 바..
[Spring] DTO는 왜 필요할까?
DTO(Data Transfer Object)를 직역해보면, 데이터 전송(전달) 객체라는 뜻이다. 이미 만들어놓은 도메인 객체를 사용하면 될텐데, 왜 DTO라는 객체라는 개념을 만들어서 사용해야하는걸까?! 과연, Transfer 전달을 위해서만 필요한 객체일까?! 그럼 도메인 객체를 Controller - Service - Repository(스프링 3계층)에서 모두 사용했을 때의 장점과 단점부터 알아보자! 장점하나의 객체만 사용하면, 관리할 것도 하나이기 때문에 편하다. (개발자가) 단점Controller - Service - Repository(스프링 3계층) 간의 이동 시에 데이터가 변경될 수 있다. 낮은 데이터 신뢰성사용자에게 보여줄 필요 없는(시스템에서 필요한) 데이터가 포함되어 이동되고, 사용..
[Spring] Data Binding의 3가지 방법
Data Binding이란? 단어 하나씩 뜯어보자면, 데이터 묶기! 요청 데이터를 우리 도메인 객체(Request DTO)로 담아(묶어)주거나 그 반대과정을 의미한다! 기본적인 타입 변환을 보고 가자@GetMapping("/hotels/{id}") @RequestBody public String getHotelById(@PathVariable int id) { return "hotelId" + id; }GetMapping시에 parameter값으로 날아오는 id를 받고 있는 것을 볼 수 있다. 이 때, id가 String인지 int인지 지정해주면, parameter를 자동적으로 변환해준다! 우리는 기본적인 타입 변환을 사용하고 있다는 것을 확인하고 넘어가자 Converter Interface 이건 뭐얏?..
[Spring] 객체지향적인 개발을 하도록 도와주는 IoC와 DI
어디서 객체를 생성해서, 이 객체를 어느시점에 호출해줘야하는걸까? 이러한 객체의 생명주기를 고민하면서 구현을 했던 개발자들에게, 객체지향적으로 개발을 할 수 있도록 틀을 제공하여 비즈니스 로직에 더 신경쓰도록 도와주는 것이 Spring이라는 프레임워크다. 즉, 스프링은 객체 지향 언어인 자바가 객체 지향적인 언어로써 구현이 될 수 있도록 틀을 제공한다. 얼마나 이러한 고뇌가 힘들었으면, 드디어 개발자에게 봄이왔다며 Spring이라 이름을 지었을까..? 그렇기 때문에, 스프링은 자바와 별개가 아니며, IoC와 DI는 객체지향적 관점에서, 스프링을 사용하는 중요한 이유가 된다. IoC(Inversion of Control) : 제어의 역전 기존의 객체를 생성하고, 소멸하는 시점을 결정했던 개발자의 역할(제어..
sooyeon-kr
'Spring' 태그의 글 목록