- 스프링 프레임워크
- 스프링의 핵심
- 스프링의 특징
1. 프레임워크
: 완성된 소프트웨어가 아니라 어떤 문제를 해결하기 위해 만들어진 미완성 모듈로 자바 개발자들이 공통으로 사용하는 기능을 미리 만들어서 제공(해결해야 하는 문제 - 내가 개발하고 싶은 시스템(교육, 예약, 인터넷뱅킹, 쇼핑몰.....)
- 재사용이 가능한 모듈, 일반적으로 프레임워크를 통해서 개발하는 시스템의 공통모듈들은 프레임워크에서 제공하는 모듈을 이용해서 처리
* 공통모듈 : db연동, 트랜잭션처리, 뷰관리, 로그기록, 보안처리, 다국어처리, 메시징...
- 프레임워크를 사용하면 개발자들간의 의사소통이 가능한 프로젝트를 만들 수 있다.
- 신뢰성이 높은 시스템을 개발할수 있다.
- 대부분의 개발자들이 수동으로 처리하던 작업을 프레임워크에서 제공해주기 때문에 유지보수나 시스템 개발을 위한 시간을 절약할 수 있다.
- 프레임워크를 제공하는 모듈(XXXX.jar)은 누가 어떤 시스템을 개발하더라도 바로 사용할 수 있는 안정적인 모듈
2. 스프링의 핵심
- DI (Dependency Injection, 의존성 주입)
: 객체의 결합도를 낮춰줌
- AOP(Aspect Oriented Programming, 관점 지향 프로그래밍)
: 관점을 기준으로 각각의 기능을 나눔
- IoC컨테이너(Inversion of Control, 제어반전)
: 객체의 생명주기, 의존성을 관리
2022-11-24 스프링 - IoC(제어의 역전)컨테이너를 이용해 결합도 낮은 코드만들기 (tistory.com)
- 스프링웹 MVC(스프링의 서브 프로젝트 중 하나)
: 각각의 역할을 구분하여 결합도를 낮추고 유연성을 높이는 디자인 패턴으로 수정이 용이하다
- 트랜잭션, 커넥션풀, 스케쥴러, 다국어, 메시징기반처리...
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
'Spring' 카테고리의 다른 글
2022-11-23 스프링 board패키지 리뷰 (0) | 2022.11.24 |
---|---|
2022-11-23 스프링 customer패키지 리뷰 (0) | 2022.11.24 |
2022-11-11 JDBC 이론 정리 (0) | 2022.11.12 |
2022-11-11 Servlet 등록, 요청 (0) | 2022.11.12 |
2022-11-09~10 JDBC 2. select - 전체 사원 조회하기 (0) | 2022.11.11 |
댓글