Spring Framework (28) 썸네일형 리스트형 Factory Bean 스프링 프레임워크에서 팩토리 빈(FactoryBean)은 객체 생성을 책임지고 해당 객체를 반환하는 특별한 종류의 빈(Bean)입니다. FactoryBean 은 다른 빈을 생성하는 용도로 사용될 수 있으며, 주로 복잡한 객체 생성 로직이 필요한 경우에 활용됩니다. ※ BeanFactory 인터페이스와 혼동하지 마세요 스프링 프레임워크에서 FactoryBean 인터페이스를 사용하는 궁극적인 이유는 복잡한 초기화 로직을 갖는 객체의 생성을 캡슐화하고, 스프링의 의존성 주입(DI) 컨테이너에 통합하기 위함입니다. FactoryBean을 사용하면 다음과 같은 이점들이 있습니다: 1. 복잡한 생성 과정 캡슐화: 객체 생성 과정이 복잡할 때, 이 로직을 FactoryBean 내부에 숨겨서 사용자가 간단히 빈을 요청.. Java Dynamic Proxy와 Spring FactoryBean 프록시와 프록시 패턴, 데코레이터 패턴 트랜잭션 경계 설정 코드를 비즈니스 로직에서 분리하는 방법에 초점을 맞추고 있습니다. 프록시 패턴 프록시 패턴은 클라이언트와 타깃(실제 객체) 사이에 프록시(대리자) 객체를 배치하여, 타깃의 메소드 호출을 제어하거나 부가적인 작업을 수행하는 패턴입니다. 이 패턴의 주된 목적은 두 가지입니다: 1. 접근 제어: 클라이언트가 타깃 객체에 직접 접근하는 것을 제한하거나 특정 조건에서만 접근을 허용합니다. 2. 부가 기능 추가: 타깃 객체의 메소드 호출 전후에 부가적인 작업을 수행하여, 타깃의 기능을 확장합니다. 프록시 패턴의 핵심은 타깃과 동일한 인터페이스를 프록시가 구현함으로써 클라이언트가 타깃인 줄 알고 프록시를 통해 작업을 수행하게 하는 것입니다. 예를 들어, Us.. InvocationHandler InvocationHandler는 자바의 java.lang.reflect 패키지에 있는 인터페이스로, Java의 다이나믹 프록시(dynamic proxy) 메커니즘의 핵심 부분입니다. 다이나믹 프록시는 런타임에 특정 인터페이스를 구현하는 클래스의 인스턴스를 생성하는 기능을 제공합니다. 이 과정에서 InvocationHandler는 핵심적인 역할을 담당합니다. InvocationHandler의 기능과 역할 메소드 호출의 중앙 처리: InvocationHandler 인터페이스는 단 하나의 메소드 invoke를 가지고 있습니다. invoke 메소드는 프록시 인스턴스의 메소드가 호출될 때마다 자동으로 실행됩니다. 즉, InvocationHandler는 프록시를 통해 호출된 모든 메소드를 중앙에서 처리합니다. 동.. 서비스 추상화 서비스 계층 자바 웹 애플리케이션에서 Service 계층은 일반적으로 비즈니스 로직을 처리하는 부분을 의미합니다. 이 계층은 사용자의 요청을 받아들이고 처리하는 Controller 계층과, 데이터를 저장하고 관리하는 Repository 또는 DAO(Data Access Object) 계층 사이에 위치합니다. Service 계층의 주요 역할은 다음과 같습니다: 1. 비즈니스 로직 처리: 사용자로부터 받은 데이터를 가공하거나, 특정 비즈니스 규칙에 따라 계산하고 처리합니다. 2. 트랜잭션 관리: 여러 데이터베이스 연산을 하나의 작업 단위로 묶어서 처리합니다. 예를 들어, 한 작업 내에서 데이터베이스의 여러 테이블에 데이터를 추가하거나 수정할 때, 모든 작업이 성공적으로 완료되거나 실패할 경우 롤백하는 등의 .. Service Layer 자바 웹 애플리케이션에서 ‘Service 계층’은 일반적으로 비즈니스 로직을 처리하는 부분을 의미합니다. 이 계층은 사용자의 요청을 받아들이고 처리하는 Controller 계층과, 데이터를 저장하고 관리하는 Repository 또는 DAO(Data Access Object) 계층 사이에 위치합니다. Service 계층의 주요 역할은 다음과 같습니다: 1. 비즈니스 로직 처리: 사용자로부터 받은 데이터를 가공하거나, 특정 비즈니스 규칙에 따라 계산하고 처리합니다. 2. 트랜잭션 관리: 여러 데이터베이스 연산을 하나의 작업 단위로 묶어서 처리합니다. 예를 들어, 한 작업 내에서 데이터베이스의 여러 테이블에 데이터를 추가하거나 수정할 때, 모든 작업이 성공적으로 완료되거나 실패할 경우 롤백하는 등의 처리를 합.. 템플릿 콜백 패턴(Template Callback Pattern) 템플릿 콜백 패턴(Template Callback Pattern)은 소프트웨어 개발에서 많이 사용되는 디자인 패턴 중 하나입니다. 이 패턴은 알고리즘의 전체적인 구조는 유지하면서, 일부분은 서브클래스에서 구현되도록 하는 것을 목적으로 합니다. 템플릿 콜백 패턴은 주로 Template Method 디자인 패턴과 함께 사용됩니다. Template Method 패턴은 알고리즘의 구조를 정의하고, 이 구조에서 일부분은 추상 메서드로 선언하여 서브클래스에서 구현하도록 합니다. 이때, 템플릿 콜백 패턴은 추상 메서드에서 콜백 메서드를 호출하여, 서브클래스에서 구현한 기능을 실행합니다. 이제, 템플릿 콜백 패턴을 사용한 간단한 예제 코드를 작성해보겠습니다. 여기서는 파일을 읽어들여, 파일 내용을 처리하는 프로그램을 .. 전략 패턴 전략 패턴(Strategy pattern)은 소프트웨어 개발에서 일반적으로 사용되는 디자인 패턴 중 하나입니다. 이 패턴은 객체 지향 프로그래밍에서 다양한 알고리즘을 정의하고 각각을 캡슐화하여 이들을 서로 교환 가능하도록 만듭니다. 전략 패턴을 사용하면 런타임 시에 알고리즘을 선택할 수 있으며, 이를 통해 다양한 알고리즘을 쉽게 추가하거나 변경할 수 있습니다. 이 패턴은 알고리즘을 호출하는 클라이언트와 알고리즘을 구현하는 클래스를 분리하여 유연성을 제공하며, 재사용 가능한 코드를 작성할 수 있도록 도와줍니다. 전략 패턴은 일반적으로 인터페이스를 사용하여 알고리즘을 정의하고, 이 인터페이스를 구현하는 다양한 클래스를 만듭니다. 클라이언트는 이러한 클래스 중 하나를 선택하여 알고리즘을 실행할 수 있습니다. .. @Import @Import 어노테이션을 사용하는 것은 Spring Framework에서 애플리케이션의 구성(Configuration) 메타데이터를 추가하는 방법 중 하나입니다. 이 어노테이션을 통해 다양한 방식으로 구성 클래스를 가져와 애플리케이션 컨텍스트에 등록할 수 있습니다. @Import를 사용하는 방법은 크게 정적 방법과 동적 방법으로 나눌 수 있습니다. 정적 방법(Static Method) 정적 방법은 가장 기본적인 @Import 사용 방식으로, 한 개 또는 여러 개의 구성 클래스를 직접 명시합니다. 이 방식은 컴파일 시점에 결정되므로 정적이라고 합니다. 예를 들어, @Configuration 어노테이션이 붙은 Java 클래스에 @Import 어노테이션을 사용하여 다른 구성 클래스들을 명시적으로 지정할 수 .. SOLID(객체 지향 설계 원칙) http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod ArticleS.UncleBob.PrinciplesOfOod The Principles of OOD What is object oriented design? What is it all about? What are it's benefits? What are it's costs? It may seem silly to ask these questions in a day and age when virtually every software developer is using an object oriented language butunclebob.com SOLID는 객체 지향 프로그래밍에서의 다섯 가지 원칙을 의미합.. OCP(Open-Closed Principle) OCP(Open-Closed Principle)는 소프트웨어 개발에서 객체지향 설계 원칙 중 하나로, "개방-폐쇄 원칙"이라고도 불리며, 소프트웨어 개발에서 확장성을 고려하여 설계를 할 때 적용되는 원칙입니다. OCP는 소프트웨어 개발에서 변경에 대한 비용과 위험을 최소화하기 위해, 기존의 코드를 수정하지 않고도 기능을 추가하거나 변경할 수 있도록 하는 것을 목표로 합니다. OCP는 다음과 같은 내용을 담고 있습니다. 개방(O): 모듈은 확장에 대해 열려 있어야 합니다. 즉, 새로운 요구사항이나 기능이 추가되어도 기존 코드의 수정 없이도 새로운 코드를 추가할 수 있어야 합니다. UserDao는 DB 커넥션 기능을 확장하는 데는 열려 있습니다(DConnectionMaker, NConnectionMaker).. 이전 1 2 3 다음