Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

개발새발

#DI #AOP # Ioc # PSA 본문

스프링

#DI #AOP # Ioc # PSA

개발하는후추 2022. 8. 4. 15:39

Spring Framework

  • 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로서 엔터프라이즈금 애플리케이션을 개발하기 위한 모든 기능을 종합적으로 제공하는 경량화된 솔루션
  • 엔터프라이즈급 개발이란 뜻대로만 풀이하면 기업을 대상으로 하는 개발
    즉, 대규모 데이터 처리와 트랜잭션이 동시에 여러 사용자로부터 행해지는 매우 큰 규모의 환경을 엔터프라이즈 환경이라 한다

Spirng Framework는 경량 컨테이너로 자바 객체를 담고 직접 관리

Spring Framework는 IOC기반

Ioc(Inversion of Control) : 제어의 역전

  • IoC(Inversion of Control)란 "제어의 역전" 이라는 의미로, 말 그대로 메소드나 객체의 호출작업을 개발자가 결정하는 것이 아니라, 외부에서 결정되는 것을 의미
  • IoC는 제어의 역전이라고 말하며, 간단히 말해 "제어의 흐름을 바꾼다"
  • 객체의 의존성을 역전시켜 객체 간의 결합도를 줄이고 유연한 코드를 작성할 수 있게 하여 가독성 및 코드 중복, 유지 보수를 편하게 할 수 있게 한다

객체 결정 및 생성 -> 의존성 객체 생성 -> 객채 내의 메소드 호출 하는 작업을 반복 : 사용자가 제어하는 구조
(-----------------------------------------------------------------------------------------------)
객체 생성 -> 의존성 객체주입(제어권을 스프링에게 위임하여 스프링이 만들어 놓은 객체를 주입) -> 의존성 객체 메소드 호출

  • 스프링이 모든 의존성 객체를 스프링이 실행될때 다 만들어주고 필요한곳에 주입시켜줌으로써 Bean들은 싱글턴 패턴의 특징을 가지며,

제어의 흐름을 사용자가 컨트롤 하는 것이 아니라 스프링에게 맡겨 작업을 처리하게 된다

  • IoC에서의 객체는 자기가 사용할 객체를 선택하거나 생성하지 않는다
  • 자신이 어디서 만들어지고 어떻게 사용되는지 또한 모른다
  • 자신의 모든 권한을 다른 대상에 위임함으로 써 제어권한을 위임받은 특별한 객체에 의해 결정되고 만들어진다

즉, 제어의 흐름을 사용자가 컨트롤 하지 않고 위임한 특별한 객체에 모든 것을 맡기는 것

IOC란 기존 사용자가 모든 작업을 제어하던 것을 특별한 객체에 모든 것을 위임하여 객체의 생성부터 생명주기 등 모든 객체에 대한 제어권이 넘어 간 것

DI(Dependency Injection)

: 의존성 주입

  • 객체가 서로 의존하는 관계가 되게 의존성을 주입하는것
    객체지향에서 의존성이란 하나의 객체가 어떠한 다른 객체를 사용하고 있는것

특징

POJO(Plain Old Java Object)

  • 평범한 자바 오브젝트
  • geeter/setter를 가진 단순 자바 오브젝트
  • pojo를 사용함으로 코드가 간결해지고 테스트하기 좋고, 요구사항에 따라 기술적으로 선택 할 수 있다

AOP(Aspect Oriented Programming)

  • 관점 지향 프로그래밍
  • 무분별하게 중복되는 코드를 한 곳에 모아 중복되는 코드를 제거
  • 공통기능을 한 곳에 보관함으로써 공통 기능 하나의 수정으로 모든 핵심기능들의 공통기능을 수정 할 수 있다
  • 핵심 기능과 부가 기능을 분리하고 분리된 부가 기능을 어디에 적용할지 선택하는 기능들을 만들었다
  • 분리한 부가 기능과 그 기능들을 어디에 적용할지 선택하는 기능을 합해서 하나의 모듈로 만든 것
  • 유지보수,재활용을 극대화한것

PSA(Portable Service Abstraction)

  • 어떤 클래스의 본질적인 특성만을 추출하여 추상화 하는것
  • 추상화된 상위 클래스를 하위클래스들이 요구사항에 맞춰 사용하는 것
  • 인터페이스를 만들어두고 그것을 통해 간접적으로 접근하는 것(느슨한 결합)

DI(Dependency Injection 의존성 주입)

  • IoC 개념을 조금 구체화 시킨 것
  • 객체지향 프로그래밍에서 의존성이라고 하면 대부분 객체 간의 의존성을 의미
  • A 클래스가 B 클래스의 기능을 사용하는 것을 클래스 다이어그램으로 표현
  • A 클래스가 B 클래스의 기능을 사용 할 때, ‘A클래스는 B클래스에 의존한다’

참조:출처: https://dev-coco.tistory.com/80 [슬기로운 개발생활:티스토리]

'스프링' 카테고리의 다른 글

#스프링 MVC 동작  (0) 2022.08.04
#스프링 MVC  (0) 2022.08.04
#서블릿  (0) 2022.08.04
#아키텍처 # 라이브러리 # 프레임워크  (0) 2022.08.04
드디어 스프링1 #SOLID  (0) 2022.08.03
Comments