자바를 공부하면서 당연하게 접하게 되는 스프링에 대해서 알아보고
강의를 들으면서 프로젝트를 해보려고 한다.
강의를 듣기전 예습으로 스프링에 대해서 알아보고 정리하는 시간을 갖었다.
1. 스프링이란
Java의 웹 프레임워크로 Java 언어를 기반으로 사용한다.
Spring외의 다른 기술도 존재하지만, Spring은 코드를 참조하기 쉬운 편리한 구조를 갖고 있는 오픈소스 프레임워크이다.
2. 프레임워크란
어떠한 목적을 달성하기 위해, 복잡하게 얽혀 있는 문제를 해결하기 위한 약속으로 하나의 뼈대 역할을 한다.
또한, 클래스의 모음과도 같다.
2.1 프레임워크 특징
- 의존성 주입(DI : Dependency Injection)
: 프로그램 구성요소간의 의존 구조를 외부 파일에서 정의.
각 요소 사이에 의존성이 존재하는 경우에 의존 관계를 정의해서 외부파일을 통해서 설정해준다. 설정파일을 분리함으로서 유지보수가 쉬워지고 결합성이 낮아진다는 장점이 있다.
- POJO(Plain Old Java Object) 방식
: 일반적인 Java 코드를 이용해서 프로그래밍이 가능하다. 기존의 프레임워크에서 제공한 설계되어 있는 인터페이스나 클래스를 상속받아서 무거운 객체를 만들어야한 단점으로 보완했다. 간단하게 Java 코드만 있으면 객체를 구성할 수 있게되어 프로그래밍이 가벼워지는 장점이 있다.
- 관점지향 프로그래밍(AoP)
: 관점에 따라 기능을 분리해서 프로그래밍 할 수 있다. 이러한 방식으로 유지보수가 쉬워지고 관점에 최적화된 프로그래밍이 가능해지는 장점이 있다.
- 제어의 반전(IoC: Inversion of Control)
: 라이브러리를 호출하여 코드에 포함시켜 프로그램을 실행시켰지만 스프링에서는 지원하는 형식에 맞게 작성하면 프레임워크에서 개발자의 코드를 호출해서 사용하는 방식을 사용한다.
3. 프레임워크 vs 라이브러리
라이브러리는 개발자가 프로그램을 개발하다가 라이브러리 필요성을 느끼고 추가를 원할 경우 사용하는 것으로 프로그램 기능 구현에만 도움을 준다.
But! 프레임워크는 필요한 라이브러리와 기능구현에 필요한 설계도 틀까지 제공한다.