본문 바로가기

Spring Framework

(28)
The IoC Container 공식 문서 Introduction to the Spring IoC Container and Beans 이 장에서는 Spring Framework가 제어의 역전(IoC) 원칙을 구현하는 방법에 대해 다룹니다. IoC는 종속성 주입(DI)으로도 알려져 있습니다. 이것은 객체가 자신의 의존성(즉, 그들이 함께 작업하는 다른 객체들)을 오직 생성자 인자, 팩토리 메소드로 전달된 인자, 또는 객체가 생성되거나 팩토리 메소드에서 리턴된 후에 객체 인스턴스에 설정된 속성을 통해서만 정의하는 과정입니다. 그런 다음 컨테이너는 빈을 생성할 때 그 의존성을 주입합니다. 이 과정은 근본적으로 빈이 클래스의 직접 생성 또는 서비스 로케이터 패턴과 같은 메커니즘을 사용하여 자신의 의존성의 인스턴스화나 위치를 제어하는 것의 반대..
토비의 스프링 1.5 스프링의 IoC 참조 스프링 프레임워크의 핵심 구성 요소는 빈 팩토리(Bean Factory)와 애플리케이션 컨텍스트(Application Context)입니다. 이 두 구성 요소는 이전에 설계한 DaoFactory의 개념을 훨씬 더 발전시킨 형태로 이해할 수 있습니다. 빈 팩토리는 스프링의 IoC 컨테이너의 기본 기능을 제공하는 핵심 인터페이스로, 애플리케이션 내의 객체(빈) 생성 및 관리를 담당합니다. 이는 객체의 생명주기와 의존성 관리를 중앙집중적으로 처리하여, 객체 간의 결합도를 낮추고 코드의 재사용성과 유지보수성을 향상시킵니다. 빈 팩토리는 필요에 따라 객체(빈)를 생성하고, 이들 간의 의존성을 주입하여 애플리케이션을 구성합니다. 애플리케이션 컨텍스트는 빈 팩토리에 더 많은 엔터프라이즈 특화 기..
토비의 스프링 1.4 제어의 역전 제어의 역전(Inversion of Control, IoC)은 객체지향 프로그래밍에서 중요한 개념이며, 스프링 프레임워크를 통해 널리 알려진 용어입니다. 이 개념은 프로그래밍에서 꽤 오래전부터 존재해왔으며, IoC의 핵심은 프로그램의 흐름 제어를 개발자가 아닌 프레임워크에 위임하는 것입니다. 이를 통해 개발자는 비즈니스 로직에 집중할 수 있으며, 코드의 유연성과 재사용성이 향상됩니다. UserDao 코드를 더욱 개선하여 IoC의 개념을 적용해 보겠습니다. 오브젝트 팩토리의 도입 UserDaoTest는 원래 테스트를 위한 클래스였지만, 특정 구현 클래스의 사용에 대한 책임을 가지게 되었습니다. 이를 해결하기 위해, 객체 생성 책임을 분리하는 팩토리(Facotry)의 개념을 도입할 수 있습니다...
토비의 스프링 1.3 DAO를 확장하기 전 현재까지의 상황DAO를 확장하기 전 현재까지의 상황 현재의 설계 상태는 객체지향 설계 원칙 중 하나인 '관심사의 분리'를 적용하여, 두 가지 주요 관심사를 명확히 구분한 상태입니다. 이 두 관심사는 각각 '데이터베이스(DB) 연결 관리'와 '데이터 액세스 오브젝트(DAO)의 비즈니스 로직 처리'입니다. 이러한 분리의 목적은 변화의 성격에 기인합니다. 즉, 변화의 이유, 시기, 주기 등이 서로 다르기 때문에 이들을 별도로 관리하는 것이 유리합니다. 1. 데이터베이스 연결 관리: 이 관심사는 어떤 종류의 데이터베이스에 연결할 것인지, 접속 정보(예: 호스트 주소, 사용자 이름, 비밀번호 등)를 어떻게 설정할 것인지에 초점을 맞춥니다. 이는 애플리케이션의 구성 요소 중 하나로, 종종 환경..
토비의 스프링 1. 오브젝트와 의존관계 1.1 초난감 DAO 자바 개발에서 "아티팩트(Artifact)"라는 용어는 빌드 과정에서 생성되는 파일이나 결과물을 의미합니다. 이 아티팩트는 소스 코드, 설정 파일, 라이브러리, 컴파일된 클래스 파일 등 다양한 형태를 가질 수 있으며, 자바 개발의 중요한 산출물입니다. 자바 아티팩트의 종류 1. JAR 파일 (Java Archive File): JAR 파일은 자바 클래스 파일과 해당 애플리케이션 또는 라이브러리에 필요한 리소스 파일들을 압축한 아카이브 파일입니다. - 이는 자바 애플리케이션을 배포하거나 라이브러리를 공유할 때 흔히 사용됩니다. 2. WAR 파일 (Web Application Archive File): 웹 애플리케이션의 배포를 위해 사용되는 아티팩트입니다. - JSP, 서블릿, 자바 클..
Spring – JDBC Template Introduction to JDBC (Java Database Connectivity) JDBC는 Java Database Connectivity를 의미합니다. JDBC는 데이터베이스와 연결하고 쿼리를 실행하기 위한 자바 API입니다. 이것은 Sun Microsystems에서 제공하는 표준 추상화(API 또는 프로토콜)로, 다양한 데이터베이스와 통신하기 위한 자바 애플리케이션에 대한 명세입니다. JDBC는 자바 데이터베이스 연결 표준을 제공합니다. 데이터베이스에 접근이 필요한 프로그램을 작성하는 데 사용됩니다. JDBC는 데이터베이스 드라이버와 함께 데이터베이스 및 스프레드시트에 접근할 수 있습니다. 관계형 데이터베이스(RDB)에 저장된 엔터프라이즈 데이터는 JDBC API를 통해 접근할 수 있습니다...
PlatformTransactionManager 트랜잭션 [Transaction] ※ 트랜잭션[Transaction] 트랜잭션은 데이터베이스 관리 시스템(DBMS)에서 데이터의 무결성을 보장하기 위해 사용되는 기본 단위입니다. 간단하게 말하자면, 트랜잭션은 데이터베이스에 대한 하나 이상의 연산들의 그룹으로, 이들 연산은 하나의 단일 작업으로 취급됩니다. 트랜잭션의 주요 특징[ACID]은 다음과 같습니다: 1. 원자성(Atomicity): 트랜잭션 내의 모든 연산들은 전체적으로 완료되거나 전혀 실행되지 않아야 합니다. 즉, 모든 단계가 성공적으로 완료되거나, 하나라도 실패하면 전체 트랜잭션이 취소(롤백)됩니다. 2. 일관성(Consistency): 트랜잭션이 완료된 후에는 데이터베이스가 일관된 상태를 유지해야 합니다. 이는 트랜잭션 전후로 데이터베이스의..
Spring Tool Suite 4 Spring Tool Suite 4 설치 아래 URL에서 스프링 툴 수트 4를 다운로드할 수 있습니다. https://spring.io/tools Spring | Tools spring.io 개발 Host PC의 CPU와 OS 버전에 따라 STS4(Spring Tools 4 for Eclipse)를 선택합니다. 파일 확장자가 *.jar 파일임을 확인합니다. 해당 spring-tool-suite 4 파일을 원하는 디렉토리로 복사합니다. 그리고 윈도우 검색창에서 cmd를 검색합니다. cmd을 실행시켜 prompt에 해당 spring-tool-suite 4 파일이 복사된 경로로 이동하기 위한 관련 커맨드를 실행시킵니다.(이 방법은 로컬 host pc에 JDK가 설치되어 있어야 합니다) prompt에 다음과 같..
AOP Spring AOP 비즈니스 로직에서 반복적으로 사용되는 트랜잭션 코드를 효과적으로 분리하여 부가 기능으로 제공하는 것입니다. 이로써 분리된 트랜잭션 코드는 마치 투명한 유리처럼 다른 코드에 영향을 주지 않으면서도 메소드 호출 과정에서 동적으로 참여하여 부가 기능을 제공합니다. 이 투명성은 언제든지 부가 기능을 추가하거나 제거할 수 있으며, 기존 코드는 항상 원래 상태를 유지할 수 있습니다. 이것은 의존성 주입(DI)의 멋진 응용 방식 중 하나로, 코드를 깔끔하게 유지하면서도 유연성을 제공합니다. 자동 프록시 생성 스프링 프레임워크에서 AOP를 구현할 때, ProxyFactoryBean을 사용하는 접근 방식은 많은 장점을 가지지만, 설정의 중복 문제가 종종 발생합니다. 이는 특히, 대규모 애플리케이션에서..
Spring ProxyFactoryBean ProxyFactoryBean ProxyFactoryBean은 스프링 프레임워크에서 제공하는 빈(Bean)으로, 다양한 유형의 프록시(Proxy) 객체를 생성하고 관리하는데 사용되는 중요한 구성 요소 중 하나입니다. ProxyFactoryBean을 사용하면 다음과 같은 기능을 수행할 수 있습니다. 1. 프록시 객체 생성: ProxyFactoryBean은 주어진 대상 객체(타겟 객체)를 감싸고, 필요한 경우 프록시를 생성합니다. 이 프록시는 대상 객체와 동일한 인터페이스를 구현하거나 상속받은 클래스를 생성할 수 있습니다. 이렇게 생성된 프록시 객체는 대상 객체의 메서드 호출을 중간에서 가로채서 추가 동작(로깅, 트랜잭션 관리 등)을 수행하거나, 대상 객체의 메서드를 호출하기 전/후에 사전/사후 처리를 할 ..