스프링 4

[스프링] 빌더 패턴 @Builder

1. 객체를 생성하는 방법 객체를 생성하는 방법에는 대표적으로 다음과 같은 3가지가 있다. 생성자 패턴 User user = new User("유저1", "1234"); userRepository.save(user); 자바빈즈 패턴 User user = new User(); user.setUserId("유저1"); user.setUserPassword("1234"); userRepository.save(user); 빌더 패턴 User user = User.builder() .userId("유저1") .userPassword("1234") .build(); userRepository.save(user); 2. 빌더 패턴(Builder Pattern)이란? 빌더패턴은 객체를 생성하는 방법 중 하나이다. 객체..

스프링 2024.01.23

[스프링] DTO를 왜 쓸까?

Spring 프로젝트를 하면서 DTO를 왜 쓰는지 의문이 들었다. 사실 DTO가 정확히 와닿지도 않아서 정리를 해보려고 한다. 1. DTO(Data Transer Object) DTO는 프로세스 간에 데이터를 전달하는 용도의 객체이다. 비즈니스 로직을 포함하지 않는 데이터를 전달하기 위한 단순한 객체이다. 클라이언트와 Controller 사이에서는 DTO로 데이터를 전달받고 어플리케이션 내부 (Service, Repository..)에서는 Domain(Entity 또는 Model)을 통해 데이터를 전달한다. Service, Repository에서는 객체로 데이터를 전달하고, Controller에서 DTO 객체로 매핑해서 클라이언트에 리턴한다. 2. DTO랑 Domain 분리하는 이유 2-1. 관심사의 분..

스프링 2024.01.23

[스프링] 공공데이터 SERVICE_KEY_IS_NOT_REGISTERED_ERROR 해결

오류 스프링으로 국토부 건축물대장정보 Open Api를 불러오는데 에러를 마주했다. 인코딩 키를 사용해서 브라우저에서 api 호출하면 잘 불러와지는데, 스프링에서 호출하면 SERVICE_KEY_IS_NOT_REGISTERED_ERROR 에러가 떴다. SERVICE ERROR SERVICE_KEY_IS_NOT_REGISTERED_ERROR 30 해결책 1. 서비스키를 디코딩키로 설정 후에 URLEncoder를 사용해서 각 파라미터랑 서비스키를 인코딩해줬다 인코딩 디코딩을 잘하자.. // 각 파라미터를 URLEncoder를 사용하여 인코딩 String encodedSigunguCd = URLEncoder.encode(sigunguCd, StandardCharsets.UTF_8.toString()); Stri..

스프링 2024.01.18

[스프링] 웹서버, WAS, 서블릿 / SSR, CSR

웹 어플리케이션에 대해 헷갈렸던 개념들 위주로 정리해보려 한다. 웹서버 vs WAS 둘 다 HTTP 기반으로 동작한다. 웹서버는 정적 리소스 제공한다. NGINX, APACHE가 있음 WAS는 웹서버 기능을 포함하면서 코드를 실행해 애플리케이션 로직을 수행한다. 서블릿, JSP MVC등 톰캣, Jetty, Undertow가 있음 웹 시스템 구성 WAS랑 DB만으로 시스템 구성이 가능한데, 이렇게되면 WAS가 너무 많은 역할을 담당해서 서버 과부하가 올 수 있다. 따라서 위 그림처럼 정적 리소스는 웹서버가 처리하고 애플리케이션 로직과 같은 동적 처리가 필요하면 WAS에 요청을 위임한다. 필요에 따라 웹서버랑 WAS서버를 각각 증설할 수 있어서 효율적으로 리소스를 관리할 수 있다! 서블릿 HTTP 요청이 오..

스프링 2024.01.14