Java/Spring
-
기존 Spring Boot 2.7 이하버전, Spring Security 5.6 이전버전에서는 아래와 같이 설정했다. .authorizeRequests() 메서드를 통해 허용할 URL, formLogin() 메서드를 통해 로그인 설정 등 많이 바뀐건 아니지만 불필요한 소스를 삭제하고 간단하게 설정하는방법으로 바꼈다고 한다. Spring Security 5.6 이전버전 기존소스 @Configuration @EnableWebSecurity public class SecurityConfig{ @Autowired private AuthenticationUserDetailsService authenticationUserManager; @Bean public WebSecurityCustomizer configure..
Spring Boot 2.7 이상, Spring Security 5.6 이상버전 설정하기기존 Spring Boot 2.7 이하버전, Spring Security 5.6 이전버전에서는 아래와 같이 설정했다. .authorizeRequests() 메서드를 통해 허용할 URL, formLogin() 메서드를 통해 로그인 설정 등 많이 바뀐건 아니지만 불필요한 소스를 삭제하고 간단하게 설정하는방법으로 바꼈다고 한다. Spring Security 5.6 이전버전 기존소스 @Configuration @EnableWebSecurity public class SecurityConfig{ @Autowired private AuthenticationUserDetailsService authenticationUserManager; @Bean public WebSecurityCustomizer configure..
2023.07.11 -
개발환경 : Spring Boot, Thymeleaf, javascript, html ajax 를 이용해 csv 파일 다운로드를 구현하는 과정에서 데이터가 많아질수록 느려지고 실패하는 경우도 있었다. 이러한 이유는 csv 데이터는 String 형태로 "," 콤마로 구분해 데이터를 만들어 넘기는데 반복문이 많아질수록 서버가 죽을 위험이 있다. 그래서 더 좋은 방법을 구현하는 과정에서 Html 파일을 사용하여 다운받는 방법을 사용했다. Html 위와 같이 Controller 에서 받아 처리할 데이터를 Form 태그를 통해 Submit 을 한다. 넘길 파라미터가 존재하지 않을 경우 Form 태그만 사용하여 action 으로 던져도 가능하다. Javascript ... $("#downloadForm").subm..
html 을 이용한 대용량 파일 다운로드개발환경 : Spring Boot, Thymeleaf, javascript, html ajax 를 이용해 csv 파일 다운로드를 구현하는 과정에서 데이터가 많아질수록 느려지고 실패하는 경우도 있었다. 이러한 이유는 csv 데이터는 String 형태로 "," 콤마로 구분해 데이터를 만들어 넘기는데 반복문이 많아질수록 서버가 죽을 위험이 있다. 그래서 더 좋은 방법을 구현하는 과정에서 Html 파일을 사용하여 다운받는 방법을 사용했다. Html 위와 같이 Controller 에서 받아 처리할 데이터를 Form 태그를 통해 Submit 을 한다. 넘길 파라미터가 존재하지 않을 경우 Form 태그만 사용하여 action 으로 던져도 가능하다. Javascript ... $("#downloadForm").subm..
2023.07.03 -
제네릭(Generic)이란? List list1 = new ArrayList(); Map map = new HashMap(); 위의 List 과 같이 "" 꺽쇠 안의 클래스 타입이 명시되어 있는 것을 확인할 수 있다. 이러한 "" 꺽쇠 안에 데이터 타입을 컴파일 시에 미리 지정하는것을 제네릭이라고 한다. 제네릭은 클래스나 메서드에서 사용할 내부 데이터 타입을 컴파일 시에 미리 지정하여 타입검사를 할 수 있다. 클래스나 메서드 내부에서 사용되는 객체 타입의 유연성과 안정성을 확보한다. 런타임 시 발생할 수 있는 타입 에러를 컴파일 전에 검출하여 안정성을 확보한다. 아래 예시를 확인해보자 List list = new ArrayList(); list.add("obo"); // type error Integer..
Java Generic(제네릭)제네릭(Generic)이란? List list1 = new ArrayList(); Map map = new HashMap(); 위의 List 과 같이 "" 꺽쇠 안의 클래스 타입이 명시되어 있는 것을 확인할 수 있다. 이러한 "" 꺽쇠 안에 데이터 타입을 컴파일 시에 미리 지정하는것을 제네릭이라고 한다. 제네릭은 클래스나 메서드에서 사용할 내부 데이터 타입을 컴파일 시에 미리 지정하여 타입검사를 할 수 있다. 클래스나 메서드 내부에서 사용되는 객체 타입의 유연성과 안정성을 확보한다. 런타임 시 발생할 수 있는 타입 에러를 컴파일 전에 검출하여 안정성을 확보한다. 아래 예시를 확인해보자 List list = new ArrayList(); list.add("obo"); // type error Integer..
2023.06.26 -
DispatcherServlet DispatcherServlet 의 Dispatcher 는 "보내다" 라는 뜻을 가지고 있다. 이러한 뜻에 따라 DispatcherServlet 은 HTTP 프로토콜로 들어오는 모든 요청을 맨 앞쪽에서 받아 요청에 맞는 적절한 Controller 를 찾아 전달하는 Front Controller 라고 정의할 수 있다. 여기서 Front Controller 는 서블릿 컨테이너의 제일 앞쪽에서 모든 요청을 받아 처리하는 Controller 로써 MVC 구조에서 사용되는 디자인 패턴입니다. 위 이미지를 보면서 자세하게 설명을 하게 되면 클라이언트로부터 요청이 들어오게 되면 Tomcat 과 같은 서블릿 컨테이너가 요청을 받게 됩니다. 서블릿 컨테이너에서 Filter 를 통해 인증 ..
DispatcherServlet(디스패처 서블릿, Front Controller)DispatcherServlet DispatcherServlet 의 Dispatcher 는 "보내다" 라는 뜻을 가지고 있다. 이러한 뜻에 따라 DispatcherServlet 은 HTTP 프로토콜로 들어오는 모든 요청을 맨 앞쪽에서 받아 요청에 맞는 적절한 Controller 를 찾아 전달하는 Front Controller 라고 정의할 수 있다. 여기서 Front Controller 는 서블릿 컨테이너의 제일 앞쪽에서 모든 요청을 받아 처리하는 Controller 로써 MVC 구조에서 사용되는 디자인 패턴입니다. 위 이미지를 보면서 자세하게 설명을 하게 되면 클라이언트로부터 요청이 들어오게 되면 Tomcat 과 같은 서블릿 컨테이너가 요청을 받게 됩니다. 서블릿 컨테이너에서 Filter 를 통해 인증 ..
2023.06.13 -
HttpMessageConverter 란? 클라이언트(웹브라우저) 측에서 데이터를 HTTP Request Body 로 넘길때 서버측에서 DTO 같은 객체에 변환하기 위해 사용한다. 또한 반대로 서버측에서 HTTP Response Body 로 응답 데이터를 클라이언트로 전달할 때 사용한다. 보통 서버측에서 받을때 주로 사용하는 건 @RequestBody 어노테이션과 클라이언트로 응답 데이터를 넘길때 @ResponstBody 를 사용한다. Spring MVC 요청/응답 과정 1. 클라이언트로부터 HTTP 요청이 들어오면 Front Controller 라고 불리우는 Dispatcher Servlet 이 받는다. * 클라이언트의 요청은 Front Controller 라고 하는 Dispatcher Servlet ..
HttpMessageConverter, DispatcherServlet 동작원리HttpMessageConverter 란? 클라이언트(웹브라우저) 측에서 데이터를 HTTP Request Body 로 넘길때 서버측에서 DTO 같은 객체에 변환하기 위해 사용한다. 또한 반대로 서버측에서 HTTP Response Body 로 응답 데이터를 클라이언트로 전달할 때 사용한다. 보통 서버측에서 받을때 주로 사용하는 건 @RequestBody 어노테이션과 클라이언트로 응답 데이터를 넘길때 @ResponstBody 를 사용한다. Spring MVC 요청/응답 과정 1. 클라이언트로부터 HTTP 요청이 들어오면 Front Controller 라고 불리우는 Dispatcher Servlet 이 받는다. * 클라이언트의 요청은 Front Controller 라고 하는 Dispatcher Servlet ..
2023.06.07 -
@RequestBody HTTP 요청으로 넘어오는 Body 의 내용을 HttpMessageConverter 를 통해 Java Object로 역직렬화한다. 바이너리 파일을 포함하고 있지 않은 데이터를 받는 역할을 한다. * HttpMessageConverter : HTTP 요청과 응답에 대해서 "전략 패턴"을 사용해 Converting 해주는 역할 @RequestBody 어노테이션은 HTTP 요청으로 같이 넘어오는 Header 의 Content-Type을 보고 어떤 Converter 를 사용할지 정하므로 Content-Type 은 반드시 명시해야한다. 자주쓰는 Content-Type 종류 application/json : { key : value } 형태인 json 형태로 전송 application/x-w..
@RequestBody, @RequestParam, @RequestPart@RequestBody HTTP 요청으로 넘어오는 Body 의 내용을 HttpMessageConverter 를 통해 Java Object로 역직렬화한다. 바이너리 파일을 포함하고 있지 않은 데이터를 받는 역할을 한다. * HttpMessageConverter : HTTP 요청과 응답에 대해서 "전략 패턴"을 사용해 Converting 해주는 역할 @RequestBody 어노테이션은 HTTP 요청으로 같이 넘어오는 Header 의 Content-Type을 보고 어떤 Converter 를 사용할지 정하므로 Content-Type 은 반드시 명시해야한다. 자주쓰는 Content-Type 종류 application/json : { key : value } 형태인 json 형태로 전송 application/x-w..
2023.05.15