simDev1234
심플하고 차분하게
simDev1234
전체 방문자
오늘
어제
  • 분류 전체보기
    • Computer Science
      • Basic Math
      • Data Structure
      • Algorithm
      • Database
      • OS
    • Language
      • Java
      • Kotlin
      • SQL
    • Framework
      • Spring
      • Orm&Mapper
      • 프로젝트로 스프링 이해하기
      • 스프링 라이브러리
    • Infra
      • Cloud
      • Docker
      • Redis
      • AWS, Azure
      • Device
    • Etc
      • CleanCoding
    • Git,Github

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 스프링
  • 자바프로그램
  • 자바프로그래밍
  • 참조변수
  • 자바
  • 자바메모리구조
  • JVM메모리구조
  • controllerTest
  • 참조타입
  • 404
  • scanner #next() #nextLine()
  • null
  • 컨트롤러

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
simDev1234

심플하고 차분하게

[스프링] OOP의 SOLID 원칙과 스프링
Framework/Spring

[스프링] OOP의 SOLID 원칙과 스프링

2022. 8. 29. 18:33

|  자바 웹 프로그래밍

- 동적인 웹사이트를 만들기 위해서 과거부터 지금까지 아래와 같은 역사를 거쳐왔다.

CGI
(Common Gateway Integerface)
Servlet EJB
(Enterprise Java Beans)
스프링
프로세스 단위 쓰레드 단위 비즈니스 로직을 포함 자바 기반 프레임워크

 

- CGI는 프로세스단위로 동적 페이지를 생성하기 때문에 자원의 효율성이 떨어졌기에 

- Servlet을 통해 쓰레드단위로 동적 페이지를 생성하여 극복하고자 하였다.

- EJB는 여기에 데이터의 저장 및 수정 시의 안정성을 높이고 트랜잭션 처리 기능을 추가 한 것으로

             안정적인 코딩을 가능해졌지만, 코드가 너무 복잡해서 테스트 코드를 생성하는 것도 어려웠다고 한다.

- 이때, Rod Johnson이라는 사람이 자반만의 쉬운 자바 웹 프로그래밍 방법을 담은 도서를 지필하면서,

  개발자 사이에 해당 코딩이 붐을 이루었는데, 이 코드 방식을 아예 프레임워크로 만든 것이 오늘날의 스프링이라고 한다.

 

|  스프링과 SOLID 원칙

- 객체지향에 대해서 다루면서 SOLID에 대해서 배웠었다. 바로가기

- 스프링은 자체적으로 이 SOLID 원칙을 지키는 프로그래밍을 지원한다.

 

1.  스프링의 웹 MVC 3-tier 아키텍처 : SRP 지원(분류)

- SRP는 "하나의 클래스는 단일 책임을 지어야한다"는 원칙이다.(Single Responsibility Principle)

  * SRP는 클래스의 응집도와 관련이 있으며,

    전체 기능들이 확장되고 세분화될 수록 클래스 분류가 애매모호해지는 이슈가 생기는 걸 방지한다.

- 스프링은 아래와 같이 3개의 단계를 가진 아키텍처에 의해 만들어진 프레임워크이다.

- OSI 7-layer와도 유사한 형태로,

  단계별로 역할을 나누어주어 클래스 역할이 더 명확해지고 코드파악이 더 쉬워지게 한다.

Presentation
Layer
  Business Logic
Layer
  Data Access
Layer
Controller Classes Service Classes
   

 

2. 스프링의 DI 컨테이너와 DI config - OCP, LSP, DIP 지원(교체)

- SOLID 중 DIP는 의존성 역전 원칙으로써, 하위 모듈간의 의존관계를 중간 인터페이스를 통해 해소할 것을 제안한다.

- 스프링에는 DI 컨테이너(의존성 주입 컨테이너, Dependency Injection Cotainer)가 있다.

- 더불어 DI 컨테이너 내에는 DI config가 존재하는데, DI config는 의존 클래스를 변경하는 설정(config)을 한다.

- 따라서 스프링을 사용하면 보다 쉽게 DIP를 지킨 코딩이 가능해진다.

 

 

|  스프링에 관한 참조 사이트

Google, Stackoverflow
Baeldung https://www.baeldung.com/
Medium https://medium.com/

 

- 수업 시간에 평소 알고 있었던 구글 검색이나, 스택오버플로우 페이지 외에도 두 가지의 참조 사이트를 소개받았다.

- 처음 접하게 된 사이트들이어서 신기한 마음에 몇 가지 페이지들을 공유해보고 싶다.

- Baeldung의 Start Here페이지이다. 튜토리얼을 제공하고 있는데 일반 코스에서 시큐어 코딩, REST API까지 다룬다.

  돈 주고 배워야 하는 내용들이 다 들어가 있다. 아름다운 사이트..

- Medium이라는 사이트는 일반 블로그 사이트같다. IT뿐 아니라 여러 분야를 다 섭렵하고 있는데,

  [technoligies]인가 태그를 선택해 들어가보니, 아래처럼 IT 기술 관련된 포스팅이 많이 있었다.

  신기한 건 TTS까지 제공해주고 있다는 거다. 진정한 의미의 웹 접근성 달성을 이룬 사이트다.

 

[ 참고 및 출처 ]

부트캠프 강의를 들은 후 배운 내용을 복습한 내용입니다.

'Framework > Spring' 카테고리의 다른 글

[스프링] 프로젝트 전 꼭 알아두면 좋은 것들  (0) 2022.09.13
[스프링] 스프링 MVC - 예외처리  (1) 2022.09.11
[스프링] 스프링 MVC - 필터, 인터셉터  (1) 2022.09.11
[스프링] 스프링MVC - HTTP 요청 및 응답  (1) 2022.09.11
[스프링] 스프링의 주요기술  (0) 2022.09.05
    'Framework/Spring' 카테고리의 다른 글
    • [스프링] 스프링 MVC - 예외처리
    • [스프링] 스프링 MVC - 필터, 인터셉터
    • [스프링] 스프링MVC - HTTP 요청 및 응답
    • [스프링] 스프링의 주요기술
    simDev1234
    simDev1234
    TIL용 블로그. * 저작권 이슈가 있는 부분이 있다면 댓글 부탁드립니다.

    티스토리툴바