본문 바로가기
Spring

2022-11-23 Spring에 대해서

by HTT 2022. 11. 23.
- 스프링 프레임워크
- 스프링의 핵심
- 스프링의 특징

 

 

 

 

1. 프레임워크

 

: 완성된 소프트웨어가 아니라 어떤 문제를 해결하기 위해 만들어진 미완성 모듈로 자바 개발자들이 공통으로 사용하는 기능을 미리 만들어서 제공(해결해야 하는 문제 - 내가 개발하고 싶은 시스템(교육, 예약, 인터넷뱅킹, 쇼핑몰.....)


- 재사용이 가능한 모듈, 일반적으로 프레임워크를 통해서 개발하는 시스템의 공통모듈들은 프레임워크에서 제공하는 모듈을 이용해서 처리

* 공통모듈 :  db연동, 트랜잭션처리, 뷰관리, 로그기록, 보안처리, 다국어처리, 메시징...

- 프레임워크를 사용하면 개발자들간의 의사소통이 가능한 프로젝트를 만들 수 있다.


- 신뢰성이 높은 시스템을 개발할수 있다.


- 대부분의 개발자들이 수동으로 처리하던 작업을 프레임워크에서 제공해주기 때문에 유지보수나 시스템 개발을 위한 시간을 절약할 수 있다.


- 프레임워크를 제공하는 모듈(XXXX.jar)은 누가 어떤 시스템을 개발하더라도 바로 사용할 수 있는 안정적인 모듈


2. 스프링의 핵심

 


- DI (Dependency Injection, 의존성 주입)

: 객체의 결합도를 낮춰줌


- AOP(Aspect Oriented Programming, 관점 지향 프로그래밍)

: 관점을 기준으로 각각의 기능을 나눔


- IoC컨테이너(Inversion of Control, 제어반전)

: 객체의 생명주기, 의존성을 관리

2022-11-24 스프링 - IoC(제어의 역전)컨테이너를 이용해 결합도 낮은 코드만들기 (tistory.com)

 

- 스프링웹 MVC(스프링의 서브 프로젝트 중 하나) 

: 각각의 역할을 구분하여 결합도를 낮추고 유연성을 높이는 디자인 패턴으로 수정이 용이하다

MVC 패턴이란? (tistory.com)


- 트랜잭션, 커넥션풀, 스케쥴러, 다국어, 메시징기반처리...

 


3. 스프링의 특징


- 자바기반의 프레임워크


- 스프링은 oop특성을 잘 살려서 개발을 할 수 있도록 도와주는 프레임워크


- 변경이 용이한 프로그램
  => 기존 시스템을 구성하는 구성요소가 변경되더라도 유연하게 프로그램을 운영할 수 있는 언어 (다형성)


- oop언어의 특징인 다형성을 극대화시켜서 클래스를 설계할 수 있도록 도와준다.


- IoC(제어의 역전), DI(의존관계 주입)

 


1) 스프링을 잘 활용하기 위한 방법
- oop특성을 잘 활용해서 개발하기
- 인터페이스와 구현을 분리한다(상위 인터페이스를 만들고 상위 인터페이스를 상속받아 클래스를 구현할 수 있도록 설계).

 


2) SOLID(객체지향언어를 이용해서 좋은 클래스를 설계하기 위한 5가지 원칙)
SRP(Single Responsibility Principle - 단일책임의 원칙)
=> 한 클래스는 하나의 책임(기능)만 적용할 수 있도록 설계
      변경을 할 때 수정할 내용이 거의 없으면 단일책임원칙을 잘 적용한 것
=> 계층을 나누는 이유가 이러한 이유 때문임
=> MVC패턴의 예


OCP(Open Close Principle - 개방폐쇄의 원칙)
=> 소프트웨어는 확장(기능추가)에는 열려있어야하고 변경(기존에 실행이 잘 되는 코드에는)에는 닫혀있어야 한다.

      기존의 코드를 변경하지 않고 기능을 추가할 수 있어야 한다.정책이나 요구사항이 변경되어도 코드가 수정되면 안 된다.
=> 다형성을 이용해서 인터페이스와 구현을 분리


LSP(Liskov substitution principle, 리스코프 치환 원칙)

=> 상위 타입의 객체를 하위 타입의 객체로 치환해도 상위 타입을 사용하는 프로그램은 정상적으로 동작해야 한다.


ISP(Interface Segregation Principle, 인터페이스 분리 원칙)

=> 구현체 스스로가 사용하지 않는 기능에 영향받지 않아야 한다.

      인터페이스 분리 원칙은 인터페이스는 자신의 쓰임새와 사용에 맞게끔 분리해야 한다는 원칙이다.


DIP(Dependency Inversion Principle - 의존관계 역전의 원칙)
- 개발을 할 때는 추상에 의존해야 한다. 즉 상위 인터페이스를 이용해서 개발하도록 작성해야 한다.
- 구현된 클래스(하위클래스)에 의존하면(사용하면) 안 된다.  (추상화에 의존해야 하지 하위클래스를 직접 쓰지 말아야 한다.)
ex) CustomerDAO dao = new MybatisCustomerDAO();    → XX
      CustomerDAO dao;   → O

 

 

 

 

 

출처

[Spring] IoC 컨테이너 (Inversion of Control) 란? — 슬기로운 개발생활 (tistory.com)

https://medium.com/humanscape-tech/solid-%EB%B2%95%EC%B9%99-%E4%B8%AD-lid-fb9b89e383ef

댓글