반응형

Spring 19

Java Spring MVC에서 ArgumentResolver

Spring MVC에서 ArgumentResolver는 컨트롤러 메서드의 매개변수를 처리하고 주입하는 데 사용되는 중요한 구성 요소입니다.이 글에서는 HandlerMethodArgumentResolver와 이를 활용하여 사용자 정의 로직을 구현하는 방법에 대해 설명하겠습니다.ArgumentResolver란 무엇인가?Spring MVC의 HandlerMethodArgumentResolver는 컨트롤러 메서드의 매개변수를 처리하는 전략 인터페이스입니다.이를 통해 HTTP 요청 데이터를 분석하거나 추가적인 비즈니스 로직을 적용하여 매개변수 값을 동적으로 생성할 수 있습니다.기본 동작 방식Spring MVC는 HTTP 요청을 처리하는 과정에서 컨트롤러 메서드와 매핑된 매개변수를 확인합니다.각 매개변수에 대해 등..

Spring 2024.12.22

DAO의 개인적인 오해

DAO의 대해서 개인적인 오해를 하고 있었다이전 회사에서 진행한 프로젝트는 DAO를 마치 DTO처럼 사용하고 있었다.public class UserDao { private long userId; private String userName; private String email; private String password;}DB > DAO > DTO 순으로 데이터를 옮겨가며 사용하였고, 때문에 DAO는 그저 model이지만 db와 직접적으로 접근하는 객체로만 생각하고 있었다.하지만 토비의 스프링 책에서는 DAO를 model이 아닌 class로 정의하는 것을 보게되었다.public class UserDao { public long createUser(PostUserRe..

Spring 2024.12.17

블로킹(Blocking)? 논블로킹(Non-Blocking)?

블로킹(Blocking) 블로킹이란, 어떤 작업이 수행될 때 해당 작업이 완료될 때까지 프로그램이 다른 일을 할 수 없는 상태를 말합니다. 즉, 입출력 작업을 수행할 때 결과가 반환될 때까지 대기하는 것입니다. 이러한 블로킹 모델은 I/O 작업이 끝날 때까지 스레드를 중단시켜 대기하도록 만들어져 있으며, 이는 시스템 자원의 비효율성을 야기할 수 있습니다. 아래는 블로킹 모델로 I/O 작업을 수행하는 Java 코드입니다. import java.io.*; public class BlockingIOExample { public static void main(String[] args) { try { FileInputStream fileInputStream = new FileInputStream("input.tx..

java 2023.03.07

Spring AOP, AOP 용어 정리

AOP란? AOP는 Aspect Oriented Programming의 약자로 관점 지향 프로그래밍이라고 불린다. 관점 지향은 쉽게 말해 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화하겠다는 것이다. (여기서 모듈화란 어떤 공통된 로직이나 기능을 하나의 단위로 묶는 것을 말한다.) 객체지향의 기본원칙을 적용하여도 핵심기능에서 부가기능을 분리해서 모듈화하는 것은 매우 어렵다. AOP는 애플리케이션에서의 관심사의 분리(기능의 분리), 핵심적인 기능에서 부가적인 기능을 분리한다. 분리한 부가기능을 에스펙트(Aspect)라는 독특한 모듈형태로 만들어서 설계하고 개발하는 방법이다. OOP를 적용하여도 핵심기능에서 부가기능을 쉽게 분리된 모듈로 작성하기 어려운..

Spring 2022.07.05

[Spring Boot] @SpringBootApplication

스프링부트 메인 클래스에는 @SpringBootApplication 라는 어노테이션이 붙어있다. @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } 메인 클래스에 붙어 있는 @SpringBootApplication은 크게 3가지가 합쳐진 것이라고 생각할 수 있다. @SpringBootConfiguration @ComponentScan @EnableAutoConfiguration 스프링 부트 어플리케이션은 Bean을 2번 등록한다. 처음에 ComponentScan으로 등록하고, 그 후에 EnableAuto..

Spring 2022.06.30

JVM 메모리 구조

JVM(Java Virtual Machine)이란? 자바를 싱행하기 위한 가상 기계이다. 즉 자바를 실행하기 위한 가상 컴퓨터이다. 자바로 작성된 어플리케이션은 모두 이 가상 JVM에서만 실행되기 때문에 자바 어플리케이션이 실행되기 위해서는 JVM이 필요 자바 바이트 코드를 실행할 수 잇는 주체 운영체제 위에서 동작하는 프로세스로 자바 코드를 컴파일해서 얻은 바이트 코드를 해당 운영체제가 이해할 수 있는 기계어로 바꿔 실생시켜주는 역할을 한다. 가상기계란? 소프트웨어로 구현된 하드웨어 JVM의 구성 Class Loader, Execution Engine, Garbage Collector, Runtime Data Area 로 구성되어있다. Class Loader 자바에서 소스를 작성하면 Person.jav..

java 2022.05.25

Web Server? WAS?

웹서버 (Web Server) Web Server란? Web Server는 두가지로 구분되고 있다 하드웨어 서버가 설치되어 있는 PC 소프트웨어 웹 브라우저 클라이언트로부터 HTTP 요청을 받아 정적인 컨텐츠(.html .jpeg .css 등)를 제공하는 컴퓨터 프로그램 Web Server가 하는 일은? HTTP 프로토콜을 기반으로 하여 클라이언트(웹 브라우저 또는 웹 크롤러)의 요청을 서비스 하는 기능을 담당 정적인 컨텐츠 제공 정적인 컨텐츠 : HTML, CSS 등등 WAS를 거치지 않고 바로 자원을 제공한다 동적인 컨텐츠를 위한 요청 전달 클라이언트의 요청(Request)를 WAS에 보내고, 결과를 클라이언트에게 다시 전달(Response)한다. Web Server 종류 Ex) Apache Serv..

ETC 2022.05.20

스프링 컨테이너란?

#스프링 컨테이너의 역할 스프링 컨테이너는 자바 객체의 생명 주기를 관리하며, 생성된 자바 객체들에게 추가적인 기능을 제공하는 역할을 합니다. 여기서 말하는 자바 객체를 스프링에서는 빈(Bean)이라고 부릅니다. 스프링 컨테이너로 인해서 IoC와 DI의 원리를 적용할 수 있습니다. 개발자는 new 연산자, 인터페이스 호출, 팩토리 호출 방식으로 객체를 생성하고 소멸시킬 수 있는데, 스프링 컨테이너가 이 역할을 대신해 줍니다. 즉, 제어 흐름을 외부에서 관리 할 수 있게 합니다. 또한, 객체들 간의 의존 관계를 스프링 컨테이너가 런타임 과정에서 알아서 만들어 줍니다. #스프링 컨테이너란? ApplicationContext 를 스프링 컨테이너라고 한다. 더 정확하게는 BeanFactory , Applicat..

Spring 2022.04.26

Spring을 사용하는 이유 ( 객체 지향의 원칙 )

Spring Core spring 개발 이유 EJB(Enterprise Java Bean) 기존 사용 개발툴을 사용하던 사람들이 너무 불편함을 호소했고, 그중 로드 존슨이라는 사람이 EJB의 문제점을 지적하면서 개발되기 시작했다. EJB 컨테이너를 활용해서 객체지향 설계를 하게 될 경우, 서비스 로직을 구현하는 영역보다 객체지향언어의 원칙을 지키기 위한 로직이 더 많아지는 경우가 다반사였다. 이를 좀 더 쉽게 활용하기 위해서 스프링이 개발되었다.실제로 프레임워크의 이름이 spring인 이유는 EJB를 사용하던 시절(겨울)을 지나서 새로운 시대(봄)이 오기를 바라는 마음으로 명명 spring EJB 컨테이너 대체. 보다 간결하고 사용성이 좋다(단순했다). 현재 사실상 표준 기술 스프링은 자바 언어 기반의 ..

Spring 2022.04.12
반응형