Spring/spring

스프링 컨테이너와 싱글톤 컨테이너에 대해서 알아보자 들어가며 이 블로그 포스트에서는 스프링 프레임워크에서 핵심적인 역할을 하는 "스프링 컨테이너"와 그 중요한 개념인 "싱글톤 컨테이너"에 대해 알아보겠습니다. 스프링의 핵심인 이 두 가지 개념을 이해하고 활용함으로써 좀 더 효율적이고 안정적인 애플리케이션을 개발할 수 있습니다. 스프링 컨테이너란? 스프링 컨테이너(Spring Container)는 애플리케이션의 구성을 담고 있는 환경으로, 빈(Bean)을 생성하고 관리해 주는 역할을 합니다. 런타임 시에 값을 주입해 주기 위해서는 스프링이 컨테이너에 필요한 정보를 저장해 두고, 필요한 시점에 값을 주입합니다. 일반적으로 @Configuration 어노테이션이 붙은 설정 파일을 통해 스프링 컨테이너에 값을 ..
Spring에서 객체지향 원리를 이해하 보자 들어가며 스프링은 자바 기반의 프레임워크로, 자바는 객체지향적인 프로그래밍을 중요시합니다. 이에 따라 스프링을 사용하면 객체지향적인 개발을 할 수 있습니다. 스프링이 객체지향적인 개발을 지원하는 방법을 이해하는 것은 매우 중요합니다. 따라서 이번 시간에는 스프링이 추구하는 객체지향적인 원리를 이해하는 시간을 갖도록 하겠습니다. 객체지향이란 무엇인가? 객체지향 프로그래밍은 절차지향적인 방법과는 달리 하나의 모델을 가지고 그 모델과 관련된 기능을 세분화하여 객체처럼 사용할 수 있게 하는 프로그래밍 방식입니다. 그림으로 간단하게 설명하겠습니다. Car car =new Car()라는 생성자를 통해 자동차 모델을 만듭니다. car.Go(); car.Back(); 과 같..
템플릿 메서드, 전략, 콜백 패턴에 대해서 알아보자 들어가며 애플리케이션을 개발할 때 템플릿 메서드 패턴이나 콜백패턴을 사용하지 않고 실행 시 로그를 작성해 주는 기능을 개발했다고 해보자. 그러면 try~catch 같은 예외처리를 잡는 문법이 무수히 많은 곳에 작성되면서 코드의 가독성을 낮아지게 한다. 그래서 템플릿 메서드 패턴과 콜백패턴을 알아보고 이러한 패턴들을 사용해 코드의 가독성을 높여 유지보수를 하기 쉽게 하는 방법을 알아보자 템플릿 메서드 패턴 템플릿 메서드 패턴이란? 객체지향 프로그래밍에서 사용하는 패턴 중 하나이다. 메서드 패턴은 상위 클래스의 사용할 알고리즘의 큰 틀을 만들어두고 변경이 되는 알고리즘을 하위에 클래스의 재 정의하여 구체화할 수 있는 기법을 말합니다. 이를 통해 중복된 코드..
스프링에서 사용하는 filter와 Interceptor에 대해서 알아보자 들어가며 필터(Filter)와 인터셉터(Interceptor)는 모두 웹 애플리케이션에서 클라이언트의 요청과 응답을 가로채어 특정 작업을 수행하는 기능을 제공합니다. 이 두 개에 대해서 한번 알아보도록 하겠습니다. 필터(filter) 필터(filter)란? 서블릿(스프링에서는 DispatcherServlet를 사용)컨테이너 내에서 요청 및 응답을 가로채 조작하는 기능을 제공합니다. 주로 요청 전처리와 응답의 후처리를 수행하며 클라이언트와 서버 간의 통신을 필터링하거나 조작할 수 있습니다. 필터의 동작 방법 클라인언트가 요청하면 WAS로 전달 WAS는 필터로 전달 필터는 서블릿으로 전달 서블릿은 컨트롤러로 전달 컨트롤러는 뷰페이지로 ..
AOP란 무엇일까? AOP는 왜 사용할까? AOP를 설명하기전에 상품을 주문을 예시를 들어서 생각해보자 위 사진처럼 3가지의 서비스가 있다고 생각해보자 이 서비스가 실행이 되고나면 로깅을 통해서 로그를 남기는 부가기능을 추가했다. 지금은 비지니스 로직이 3개이기 때문에 별거 아닐수 있다고 생각할수있다. 하지만 만약에 상품 주문에 관해 서비스가 100개라고 생각해보자 그럼 부가기능인 로깅도 100개가 될수있다. 같은 기능을 하는 동일안 코드가 로직안에 무려 100개나 중복되어 있는것이다. 만약 코드에 문제가있어 수정을 하게된다면 어떻까? 100개 코드를 수정해야 한다. 만약에 수정 중에 오타를 작성하거나 1개의 코드를 수정하지 못했다면 대참사가 발생할수있다. 그러면 어떻게 할까..? 부가기능을 따로 빼서 ..
트랜잭션(Transaction) 정의 데이터베이스서 수행되는 작업의 단위를 말한다. 이는 "원자성(Atomicity)",일관성(Consistency)","고립성(lsolation)", "지속성(Durability)"을 준수하는 작업의 단위다. 원자성(Atomicity) : 전부 실행되거나 전부 실행되지 않는다. 일관성(Consistency): 데이터베이스가 트랜잭션이 실행이 되더 라도 항상 일관된 상태를 유지하는 것 고립성(lsolation) : 동시에 여러 트랜잭션이 실행 되더라고 서로가 영향을 미치지않고 독립적으로 실행되는것 지속성(Durability): 트랜잭션이 성공적으로 완료되면 결과가 영구적으로 저정되는 것 트랜잭션 전파 트랜잭션 전파란 트랜잭션의 경계에서 이미 진행중인 트랜잭션이 있을때 또는..
서비스 추상화 서비스 추상화란 어떤 기능이나 상위기준에서 이해하고 다루기 위해서 세부 사항을 숨기고 추상화하는 것을 말한다. 즉 복잡한 시스템을 관리하기 쉽고 이해하기 쉽게 만들기 위함이다. 단 이몇줄로 이해하기 힘들 것이다. 간단한 코드를 통해서 어떤 식으로 추상화를 사용하는지 알아보자 예시 간단한 카페 등급을 예시를 들어서 생각해보자 카페 등급에는 총 3단계로 이뤄저 있다. 초급 단계 : 카페 가입시 기본등급 중급 단계 : 게시글 작성 3회 이상, 로그인 횟수 10회 이상 고급 단계 : 게시글 작성 10회 이상. 로그인 횟수 20회 이상 이 조건을 만족해야만 해당 등급으로 변경된다. 이런 기능을 추가할때는 DAO에다가 기능을 적용할 수도 있다. 하지만 스프링이 추구하는 "역할과 책임"을 위배하는 코드..
Exception 예외 종류 Error java.lang.Error 클래스의 서브 클래스이다. 에러는 시스템에 뭔가 비정상적인 상황이 발생했을때 사용된다. 체크 예외와 언체크 예외 Exception java.lang.Exception 클래스와 그 서브 클래스로 정의되는 예외들은 에러와 달리 개발자가 작업중에 코드에 예외상황이 발생했을때 사용된다. 체크예외 컴파일에러 복구불가능한 에러 RuntimeException만 상속받지않은 예외 RuntimeException java.lang.RuntimeException 클래스를 상속한 예외들은 명시적인 예외처리를 강제하기 때문에 언체크 예외라고 불린다. 런타임 예외 개발자가 부주의해서 발생할 수 있는 경우에 발생하도록 만든 예외 catch나 throws를 사용하지..
코드기록사
'Spring/spring' 카테고리의 글 목록