Notice
Recent Posts
Recent Comments
Link
개발 무지렁이
[Spring] Spring의 설계 철학과 느슨한 결합을 만들어주는 Spring Container의 DI와 인터페이스 지향 본문
Backend/스프링
[Spring] Spring의 설계 철학과 느슨한 결합을 만들어주는 Spring Container의 DI와 인터페이스 지향
Gaejirang-e 2023. 9. 19. 10:38
🌱 Spring의 설계 철학
: 개발자가 Spring Framework에 종속되지 않고 POJO 객체를 사용하여 애플리케이션을 개발할 수 있게 하는 것
🍩 POJO를 이용한 가볍고, 비침투적인 개발
🍩 DI와 인터페이스 지향을 통한 느슨한 결합도 (다른 구현체로 교체하기 쉽다.)
🍩 Aspect와 공통규약을 통한 선언적 프로그래밍
🍩 Aspect와 템플릿을 통한 상투적인 코드 축소
❓선언적 프로그래밍
: 무엇을 달성해야 하는지에 대해 명시적 설명
어떻게 달성하는지에 대한 세부사항은 숨겨져 있다.
: 개발자가 Spring Framework에 종속되지 않고 POJO 객체를 사용하여 애플리케이션을 개발할 수 있게 하는 것
🍩 POJO를 이용한 가볍고, 비침투적인 개발
🍩 DI와 인터페이스 지향을 통한 느슨한 결합도 (다른 구현체로 교체하기 쉽다.)
🍩 Aspect와 공통규약을 통한 선언적 프로그래밍
🍩 Aspect와 템플릿을 통한 상투적인 코드 축소
❓선언적 프로그래밍
: 무엇을 달성해야 하는지에 대해 명시적 설명
어떻게 달성하는지에 대한 세부사항은 숨겨져 있다.
𐂂 POJO (Plain-Old Java Object)
특별한 제약이나 규칙을 따르지 않는 평범한 자바객체를 가리킨다.
Spring Framework는 Spring에 특화된 클래스를 요구하지 않으며, 기본은 POJO다.
Spring Framework는 의존성 주입을 통해 POJO 객체를 연결할 수 있는 강력한 매커니즘을 제공한다.
Spring Framework는 Spring에 특화된 클래스를 요구하지 않으며, 기본은 POJO다.
Spring Framework는 의존성 주입을 통해 POJO 객체를 연결할 수 있는 강력한 매커니즘을 제공한다.
𐁍 Spring Container
🪛 설정정보를 바탕으로 객체를 생성하고,
생성된 객체를 내부에 담아,
라이프사이클 관리 및 의존성주입을 담당하는
컴포넌트를 말한다.
🪹 Spring Container는 크게 두가지 유형으로 나뉜다.
🍟 BeanFactory
🍟 ApplicationContext
⚠️ BeanFactory를 확장한 것이 ApplicationContext다.
생성된 객체를 내부에 담아,
라이프사이클 관리 및 의존성주입을 담당하는
컴포넌트를 말한다.
🪹 Spring Container는 크게 두가지 유형으로 나뉜다.
🍟 BeanFactory
🍟 ApplicationContext
⚠️ BeanFactory를 확장한 것이 ApplicationContext다.
𖠃 BeanFactory
🥚Bean 객체를 생성하고 제공하는 역할을 한다.
🍩 Bean Definition:
어떤 클래스의 객체를 생성할지, 어떤 속성값을 주입할지, 각 Bean에 대한 메타데이터를 말한다.
🍩 Lazy Initialization:
Bean 객체를 게으르게 초기화한다. (Bean 객체가 실제로 필요한 시점에서 초기화된다.)
🍩 Singleton Scope:
생성된 Bean 객체는 애플리케이션 내에서 공유되어 재사용된다.
🍩 Dependency Injection:
Bean 객체가 다른 Bean 객체를 필요로할 때, Spring Container가 이 의존성을 자동으로 처리한다.
🍩 Aspect-Oriented Programming:
BeanFactory를 통해 AOP 기능을 지원하며, 공통 관심사항을 분리하여 모듈화할 수 있다.
🍩 Bean Definition:
어떤 클래스의 객체를 생성할지, 어떤 속성값을 주입할지, 각 Bean에 대한 메타데이터를 말한다.
🍩 Lazy Initialization:
Bean 객체를 게으르게 초기화한다. (Bean 객체가 실제로 필요한 시점에서 초기화된다.)
🍩 Singleton Scope:
생성된 Bean 객체는 애플리케이션 내에서 공유되어 재사용된다.
🍩 Dependency Injection:
Bean 객체가 다른 Bean 객체를 필요로할 때, Spring Container가 이 의존성을 자동으로 처리한다.
🍩 Aspect-Oriented Programming:
BeanFactory를 통해 AOP 기능을 지원하며, 공통 관심사항을 분리하여 모듈화할 수 있다.
𖠃 ApplicationContext 인터페이스
스프링 애플리케이션의 🪛설정정보를 읽고 객체를 관리하는 역할을 한다.
ApplicationContext의 구현체
📦 ClassPathXmlApplicationContext
: ClassPath에 지정한 경로에서 xml파일을 읽어 context 정의내용을 로드
📦 FileSystemXmlAPPlicationContext
: 파일시스템에 지정한 경로에서 xml파일을 읽어 context 정의내용을 로드
📦 XmlWebApplicationContext
: 웹 애플리케이션에 포함된 xml파일에서 context 정의내용을 로드
ApplicationContext의 구현체
📦 ClassPathXmlApplicationContext
: ClassPath에 지정한 경로에서 xml파일을 읽어 context 정의내용을 로드
📦 FileSystemXmlAPPlicationContext
: 파일시스템에 지정한 경로에서 xml파일을 읽어 context 정의내용을 로드
📦 XmlWebApplicationContext
: 웹 애플리케이션에 포함된 xml파일에서 context 정의내용을 로드
'Backend > 스프링' 카테고리의 다른 글
[Spring] JDBC API 로직의 반복과 이를 해결하는 Spring의 JdbcTemplate (0) | 2023.09.15 |
---|---|
[Spring] 라이브러리의 의존관계를 관리하는 빌드툴과 기초 라이브러리 (0) | 2023.09.11 |
[Spring] 개발 및 테스트환경에 적합한 경량화된 DBMS, H2 (0) | 2023.09.10 |
[Spring] 의존성 주입(DI)에 의한 의존관계 조립 (0) | 2023.09.09 |
[Spring] Spring Framework Transaction과 AOP, Transaction Manager (0) | 2023.05.10 |
Comments