❑ Spring Framework 들어가기전
지금까지 Java의 기본과 핵심을 배웠다.
Java의 기본문법만으로 어떤 소프트웨어를 만들 수 있을까?
지금까지 배운것으로는 콘솔 출력 프로그램 또는
Java GUI API인 AWT나 Swing을 사용한 데스크탑 애플리케이션을 만들 수 있을 것이다.
➤ AWT(Abstract Window Toolkit)
자바의 본 플랫폼에 의존하는 윈도, 그래픽스, 사용자 인터페이스 위젯 툴킷
GUI를 제공하는 표준 API인 자바 파운데이션 클래스(JFC)의 일부
AWT는 수많은 자바 ME(Java Platform Micro Edition, 임베디드를 위한 자바 플랫폼)를 위한 GUI툴킷이다.
➤ 스윙(Swing)
자바에서 GUI를 구현하기 위해 JDK에서 기본적으로 제공하는 개발 툴킷
선마이크로시스템즈의 자바기반클래스의 일부
기존에 발표되었던 AWT가 OS및 윈도 시스템의 자원을 그대로 제공하기 때문에 자바에서 지향하는 “Write Once, Run Everywhere(WORE)”를 구현하기 위해 각종 시스템에서 공통적으로 제공하는 버튼, 대화창 등만을 구현했다.
그래서 여러 환경에서 동일한 화면을 보여줄 수 있지만 대신 해당 시스템의 고유한 모습을 보여줄 수 없다.
❑ 스프링 실습 환경 구성
먼저 설정해야 하는 것들이 몇 가지 있다.
- JDK-11 설치
- 환경변수에 JAVA_HOME 설정
- IntelliJ Community Edition 설치
Spring Initializr 공식 사이트로 이동
원하는 Spring Boot 실행 환경과 필요한 모듈을 포함하는 템플릿 프로젝트를 생성해 준다.
Spring Boot 애플리케이션은 WAS 배포용인 War 파일 형태로 배포할 수 있지만, 일반적으로 Spring Boot 애플리케이션은 WAS를 내장하고 있는 Jar 파일 형태로 배포해서 실행한다.
스프링 != 스프링 부트
스프링 부트는 스프링을 잘 활용하기 위해 스프링에서 나온 프로젝트
Packaging : 개발한 코드를 빌드해서 하나의 결과물로 만들어 낸다
ADD DEPENDENCIES 에서 ‘Lombok’ 과 ’Spring Web’을 선택하고 GENERATE를 누른다.
그러면 zip 파일이 다운로드 된다.
다운로드한 zip 파일은 압축해제 한다.
그 다음에 intelliJ에서 Open으로 압축을 푼 프로젝트를 열면 된다.
❑ Spring Framework 소개
➤ Framework란?
Frame은 틀, 구조, 뼈대 등의 의미이다.
벽에 거는 액자를 프레임이라고 부르기도 한다.
자동차에서는 뼈대가 되는 강판을 프레임이라고 부른다.
이처럼 Frame은 어떤 대상의 큰 틀이나 외형적인 구조를 의미한다.
지금까지 배웠던 것 중에 Framework는 Collections Framework가 있다.
Collections Framework 안에 있는 Map, Set, List 등은 데이터를 저장하기 위해 자주 사용되는 자료구조를 바탕으로 자바에서 제공하는 클래스이다.
그렇다면 콜렉션에 왜 framework라는 말을 붙일까?
자바에서 framework, 틀 하면 제일 먼저 생각나는 것이 인터페이스(Interface)이다.
자바의 콜렉션은 Map, List, Set같은 인터페이스와 그 인터페이스를 구현한 구현체들의 집합이다.
이렇게 Framework는 프로그래밍을 하기 위한 기본적인 틀이나 구조를 제공한다.
그 외에도 프레임워크는 다양한 기능들을 제공한다.
개발하고자 하는 애플리케이션이 다른 애플리케이션과 통신하고 데이터를 데이터 저장소에 저장하는 등의 기능들도 프레임워크나 라이브러리에서 제공한다.
이를 통해 개발자는 애플리케이션의 핵심 로직을 개발하는 것에만 집중할 수 있도록 해준다.
➤ Framework 와 Library?
프레임워크와 라이브러리는 얼핏 보면 같은 개념이지만 차이점이 있다.
프레임워크와 라이브러리는 여러가지 필요한 기능들을 제공한다는 점에서는 비슷하지만 중요한 차이점이 바로 애플리케이션에 대한 제어권이다.
라이브러리는 애플리케이션 흐름의 주도권이 개발자에게 있다.
개발자가 짜 놓은 코드내에서 필요한 기능이 있으면 호출해서 자유롭게 사용이 가능하다.
이에 반해 프레임워크는 애플리케이션 흐름의 주도권이 개발자가 아닌 프레임워크에 있다.
프레임워크는 불러오면 코드 상에서 보이지 않는 상당히 많은 일들을 한다.
개발자가 메서드내에 코드를 작성해두면 스프링 프레임워크에서 개발자가 작성한 코드를 사용하여 애플리케이션의 흐름을 만들어낸다.
이것이 Spring Framework의 핵심개념 중 하나인 IoC(Inversion Of Control, 제어의 역전)이다.
❑ Spring Framework를 배워야 하는 이유
➤ Spring Framework란?
스프링 프레임워크는 Java 기반의 웹 애플리케이션을 개발하는데 필요한 프레임워크이다.
2004년 버전 1.0이 처음 릴리즈 된 이후로 Java 기반의 웹 애플리케이션을 개발하는데 있어 표준이라 해도 과언이 아닐만큼 대세가 되었다.
그런데 자바 기반의 웹 애플리케이션을 개발하기 위한 프레임워크는 스프링만 있는 것은 아니다. Apache Struts2, Apache Wicket, JSF(Java Server Faces), Grails 와 같은 자바 또는 JVM 기반의 웹 프레임워크들이 존재한다.
▶️ 그런데 왜 스프링 프레임워크가 각광받는 걸까?
대부분의 기업들이 기업용 Enterprise 시스템용 애플리케이션 개발에 있어 Framework를 선택할 때, 개발 생산성을 높이고 어떻게하면 유지보수를 더 용이하게 할 것인가에 많은 초점을 맞춘다. 스프링 프레임워크는 개발 생산성을 향상시키고 유지보수를 용이하게 해주고 그 이상도 달성할 수 있게 해준다.
*기업용 Enterprise 시스템 : 기업의 업무(조직의 업무, 고객을 위한 서비스 등)를 처리해주는 시스템, 대량의 사용자 요청을 처리해야 하기 때문에 서버의 자원 효율성, 보안성, 시스템의 안전성이나 확장성 등을 충분히 고려해서 시스템을 구축한다.
Spring Framework를 사용하는 이유는 이전의 기술들을 알아보면 이해할 수 있다.
➤ Spring Framework 이전의 기술들
▶️ JSP를 이용한 애플리케이션
JSP(Java server page)
백엔드/프론트엔드의 구분없이 코드에 html/Javascript, Java가 뒤섞여 있는 방식이다.
가독성이 떨어지고 유지보수도 매우 어렵다.
프론트엔드/백엔드를 구분하지 않았던 예전엔 양쪽을 모두 개발하는 개발자들이 많았기 때문에 이런 방법을 이용했다.
▶️ 서블릿(Servlet)을 이용한 애플리케이션
JSP 방식과 Spring에서도 내부적으로 Servlet 방식을 사용한다.
서블릿은 클라이언트 웹 요청 처리에 특화된 Java 클래스의 일종이다.
서블릿 방식을 이용한다는 의미는 서블릿을 위한 자바 코드가 클라이언트 측 코드에서
분리되어 별도의 자바 클래스로 관리된다는 것을 의미한다.
하는 일에 비해 코드가 너무 길어보인다는 단점이 있다.
▶️ Spring MVC를 이용한 애플리케이션
서블릿 방식의 코드를 Spring MVC 방식의 코드로 바꾸면 코드가 간결해진다.
서블릿 방식은 클라이언트의 요청에 담긴 데이터를 꺼내오는 작업을 개발자가 직접 코드로 작성해야하고, 캐릭터셋도 지정해주어야 한다.
하지만 Spring MVC 방식의 코드에서는 눈에 보이지 않지만 그런 작업들을 Spring에서 알아서 처리해준다.
그런데도 Spring 기반의 애플리케이션의 기본 도구를 잡는 설정 작업이 여전히 불편하다는 단점이 있다.
그래서 이러한 문제를 대부분 개선한 Spring Boot가 나왔다.
▶️ Spring Boot을 이용한 애플리케이션
이전 기술에서 구현한 것을 더 짧은 코드로 간결하게 작성할 수 있다.
Spring MVC에서 겪었던 설정의 복잡함을 Spring Boot에서는 찾아볼 수 없다.
Spring의 복잡한 설정 작업도 Spring이 대신 처리해주기 때문에 개발자는
애플리케이션의 핵심 비즈니스 로직에만 집중할 수 있게 되었다.
※ 심화 학습
자바 서블릿이란?
자바 서블릿 자체를 사용하는 기술은 현재 거의 사용하고 있지 않지만 Spring MVC같은 자바 기반의 웹 애플리케이션 내부에서 여전히 사용되고 있다.
서블릿 컨테이너란?
서블릿 기반의 웹 애플리케이션을 실행해주는 것부터 시작해서 서블릿의 생명주기를 관리하며, 쓰레드 풀을 생성해서 서블릿과 쓰레드를 매핑시켜 주기도 한다.
아파치 톰캣(Apache Tomcat)은 서블릿 컨테이너의 한 종류로써 Spring MVC 기반의 웹 애플리케이션 역시 기본적으로 아파치 톰캣에서 실행 된다.
읽어주셔서 감사합니다. 좋은하루 되세요 🦾
오개념 지적은 환영입니다~
'TIL(Today I Learned)' 카테고리의 다른 글
6/15 (수) Spring Framework의 특징 2️⃣ (0) | 2022.06.15 |
---|---|
6/14 (화) Spring Framework의 특징1️⃣ (0) | 2022.06.15 |
6/10 (금) 관계형 데이터베이스2️⃣ - Schema & Query Design (2) | 2022.06.13 |
6/9 (목) 관계형 데이터베이스1️⃣ (0) | 2022.06.13 |
6/8 (수) HTTP (0) | 2022.06.12 |