본문 바로가기
반응형

전체 글510

Spring, Spring Boot 차이 Spring은 Spring Framework의 핵심 모듈들을 기반으로 한 프레임워크로 엔터프라이즈 애플리케이션 개발을 지원하기 위한 대규모 오픈 소스 프로젝트입니다. Spring Framework를 사용하기 위해서는 설정 파일 작성을 통한 스프링 컨테이너 구성, 필요한 빈 객체 등록 및 의존성 설정, 데이터베이스 연결, 트랜잭션 관리 등 다양한 설정을 개발자가 직접 수동으로 구성해야 했습니다. 따라서 프로젝트 초기화 과정에서 많은 설정과 의존성을 추가하게 되며 프로젝트는 시작하는데 시간이 많이 걸렸습니다. 또한 스프링을 통해 웹 애플리케이션을 구축하기 위해서는 별도의 WAS를 설치하고 설정해야 했습니다.Spring Boot는 Spring의 문제점을 해결해주고, 더 쉽고 빠르게 스프링 애플리케이션을 개발할.. 2025. 10. 28.
AutoConfiguration 동작 원리 AutoConfiguration의 시작은 @SpringBootApplication 어노테이션 안에 있는@EnableAutoConfiguration 이라는 애노테이션입니다.@EnableAutoConfiguration은 @Import(AutoConfigurationImportSelector.class)를 통해 자동 구성 클래스를 가져옵니다.@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documented@Inherited@AutoConfigurationPackage@Import({AutoConfigurationImportSelector.class})public @interface EnableAutoConfiguration { String.. 2025. 10. 27.
톰캣 Tomcat웹 서버와 웹 컨테이너의 결합한 형태입니다. 현재 가장 일반적이고 많이 사용되는 WAS입니다. 컨테이너, 웹 컨테이너, 서블릿 컨테이너라고도 부릅니다. JSP와 서블릿 처리, 서블릿의 수명 주기 관리, 요청 URL을 서블릿 코드로 매핑, HTTP 요청 수신 및 응답, 필터 체인 관리 등을 처리해줍니다.서블릿서블릿은 자바를 이용해 웹 서비스를 만들기 위한 스펙입니다. 클라이언트가 프로그램으로 요청을 보내면 그 요청에 대한 결과를 응답해주기 위해서 사용됩니다. 서블릿은 다음과 같이 동작합니다.사용자가 URL을 입력하면 사용자의 요청이 서블릿 컨테이너로 전송됩니다.요청을 받은 컨테이너는 HttpServletRequest, HttpServletResponse를 생성합니다.서블릿 매핑 정보를 이용해 사.. 2025. 10. 24.
RequestBody VS ModelAttribute의 차이점 이들은 클라이언트 측에서 보낸 데이터를 Java 객체로 만들어주는데 RequestBody 는 요청의 본문(Body)에 있는 값을 바인딩할 때 사용하고, ModelAttribute 는 요청 파라미터나 multipart/form-data 형식을 바인딩할 때 사용합니다.RequestBody클라이언트가 보내는 요청의 본문을 자바 객체로 변환합니다.내부적으로 HttpMessageConverter를 거치는데, 이때 ObjectMapper를 통해 JSON 값을 java 객체로 역직렬화합니다.따라서 변환될 java 객체에 기본 생성자를 정의해야 하고, getter나 setter를 선언해야 합니다. 참고cf. record에 기본 생성자를 따로 정의하지 않았는데 역직렬화가 되는 이유record 는 기본생성자를 자동으로 제.. 2025. 10. 23.
@Controller 와 @RestController 의 차이점 이 두 어노테이션의 주요 차이점은 HTTP 응답의 처리 방식에 있습니다.@Controller주로 뷰(View) 를 반환하는 컨트롤러를 정의할 때 사용됩니다. 메서드가 반환하는 값은 뷰 리졸버(View Resolver)에 의해 해석되어 JSP, Thymeleaf 등과 같은 템플릿 엔진을 통해 HTML을 생성합니다.@RestController주로 RESTful 웹 서비스 API를 정의할 때 사용됩니다. 메서드가 반환하는 값은 자동으로 JSON 또는 XML 형식으로 변환되어 HTTP 응답 본문에 포함됩니다. 이는 @Controller와 @ResponseBody의 결합된 형태입니다. 2025. 10. 22.
Spring MVC의 실행 흐름 [View를 응답하는 경우] 이미지 출처 : www.egovframe.go.kr클라이언트로부터 HTTP 요청이 들어옵니다. 이때 DispatcherServlet이 프론트 컨트롤러의 역할을 수행합니다.HandlerMapping을 통해 URL에 매핑된 핸들러를 조회합니다.DispatcherServlet은 찾은 핸들러를 실행하기 위해 HandlerAdapter를 사용합니다.HandlerAdapter가 실제로 요청을 처리하는 메서드를 호출합니다.컨트롤러는 결과 데이터를 Model 객체에 담고, View 이름을 반환합니다.ViewResolver는 View 이름을 기반으로 적절한 뷰를 찾습니다.ViewResolver가 찾은 뷰를 사용해 최종적으로 HTML과 같은 응답을 생성합니다.[Message Converter의.. 2025. 10. 21.
Filter 와 Interceptor 의 차이점 FilterFilter는 요청 및 응답의 전처리와 후처리를 수행하고 서블릿 컨테이너에 의해 실행되는 Java 클래스입니다. 주로 요청 로깅, 인증, 인코딩 설정, CORS 처리, 캐싱, 압축 등의 공통 기능을 구현하는 데 사용됩니다.특징Filter는 서블릿 컨테이너(예: Tomcat) 수준에서 동작합니다. 모든 요청이 서블릿으로 전달되기 전에 Filter를 거칩니다.생명 주기: Filter는 doFilter 메서드를 통해 요청 및 응답을 처리합니다. FilterChain을 통해 다음 필터 또는 최종 서블릿으로 요청을 전달합니다.순서: web.xml이나 @WebFilter 애노테이션을 통해 설정할 수 있으며, 필터의 순서는 설정 파일에서 정의합니다.InterceptorInterceptor는 특정 핸들러 메.. 2025. 10. 20.
@ResponseBody(or ResponseEntity<T>)가 있을 때와 없을 때의 동작 방식의 차이점 @ResponseBody 혹은 ResponseEntity 반환을 사용한다면, 스프링은 컨트롤러에서 반환된 값을 HTTP 응답 본문에 직접 씁니다. 이때 자바 객체를 자동으로 JSON이나 XML 등의 타입으로 직렬화합니다. 만약, 없는 경우에는 스프링은 반환값을 뷰 이름으로 해석합니다. 뷰 이름으로 해석한 이후에, 뷰 리졸버를 사용해 뷰를 찾고 응답합니다.(뷰에 전달할 모델이 있다면, 이를 뷰에 전달하고 응답합니다.)@ResponseBody 와 ResponseEntity 반환 중 더 좋은 방식@ResponseBody를 사용하는 경우, 코드를 간결하게 유지할 수 있습니다. 하지만, 상태코드와 헤더를 유연하게 변경하기는 어렵습니다.반면, ResponseEntity 반환의 경우 상태코드와 헤더를 유연하게 변경할.. 2025. 10. 17.
[BOJ] 9095번 1, 2, 3 더하기 - 분석 및 Java 풀이 https://www.acmicpc.net/problem/9095백준 9095번: 1, 2, 3 더하기문제 번호문제 이름난이도 (Silver 3)분류90951, 2, 3 더하기⭐⭐⭐다이나믹 프로그래밍 (DP)문제 분석: 목표와 조건주어진 양의 정수 n을 1, 2, 3의 합으로 나타내는 방법의 수를 구하는 문제입니다. 여기서 순서가 다른 합은 서로 다른 방법으로 간주합니다.입력: 테스트 케이스의 개수 T와 각 테스트 케이스에 대한 정수 n (1 n )출력: 각 n에 대해, 1, 2, 3의 합으로 나타내는 방법의 수.예시: n=44를 나타내는 방법은 총 7가지입니다.1+1+1+11+1+21+2+12+1+12+21+33+1문제 풀이의 핵심 분석: 점화식 찾기 (DP)이 문제는 작은 문제의 해답을 이용하여 큰 .. 2025. 10. 17.
728x90
반응형