[Spring] 개론

최연·2023년 2월 5일
0

1. Spring Framework

1-1. [Spring Framework]이란?

JAVA 언어 기반, 웹 프레임워크
다양한 어플리케이션을 만들기 위한 프로그래밍 틀이라 할 수 있습니다..
JAVA를 이용한 기술은 JSP, MyBatis, JPA 등 여러가지가 있습니다.
Spring Framework은 이 기술들을 더 편하게 사용하기 위해 만들어진 것 입니다.

결론적으로 Spring Framework이란 JAVA 기술들을 더 쉽게 사용할 수 있게 해주는 오픈소스 프레임 워크이다.

1) JSP (JavaServer Pages)

HTML 코드에 JAVA 코드를 넣어 동적 웹 페이지를 생성하는 웹어플리케이션 도구입니다.

2) 프레임워크 (Framework)

어떠한 목적을 달성하기 위해 복잡하게 얽혀 있는 문제를 해결하기 위한 구조이자 약속이며, 소프트웨어 개발에 있어서 하나의 뼈대 역할을 한다.
더 간단히 말하자면 프레임 워크는 자주 쓰일 만한 기능들을 한데 모아 놓은 유틸(클래스)들의 모음(집합)이라고 정의할 수 있다.

EX) Spring, Node.js

3) Mybatis

ORM Framework 입니다.
Mybatis는 자바 오브젝트와 SQL사이의 자동 매핑 기능을 지원합니다.

ORM : 일반 적으로 알고 있는 애플리케이션 Class와 RDB(Relational DataBase)의 테이블을 매핑(연결)한다는 뜻

4) JPA

자바 진영에서 ORM 기술 표준으로 사용되는 인터페이스의 모음입니다. 즉, 실제적으로 구현된것이 아니라 구현된 클래스와 매핑을 해주기 위해 사용되는 프레임워크

1-2.Spring 특징

1) IoC(Inversion of Control, 제어 반전)

개발자는 JAVA 코딩시 new 연산자, 인터페이스 호출, 데이터 클래스 호출 방식으로 객체를 생성하고 소멸시킨다. 인스턴스 (객체)의 생성부터 소멸까지 객체 생명주기 관리를 개발자가 하는게 아닌 스피링(컨테이너)가 대신 해주는 것을 말한다.

  1. 객체와 자원 자동 관리해줍니다.
  2. 개발자가 실수할 수 있는 생명주기 관리해줍니다.
  3. 개발자의 코드 호출, 코드로 생명주기를 제어합니다.

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

구성요소 간의 의존 관계를 외부의 설정파일을 통해 정의합니다.

  1. 코드 재사용을 높여 재사용을 높여 소스코드를 다양한 곳에 사용할 수 있습니다.
  2. 모듈결합도를 낮출 수 있습니다.
  3. 필요한 부분을 뺐다 꼈다 하면서 적절한 상황에 필요한 기능을 해낼 수 있다.

3) AOP(Aspect Object Programming, 관점 지향 프로그래밍)

공통 모듈을 분리시켜 해당 소스코드가 외부의 다른 클래스에서 존재하는 것 입니다.

  1. 각 비즈니스 로직마다 복붙을 통해 생겨난 중복 코드가 사라집니다
  2. 각 비즈니스 로직을 구현하는 개발자는 자기 자신의 비즈니스 코드에만 집중할 수 있어 코드가 간결해지고, 유지보수가 쉬워집니다
  3. 재활용성이 더욱 높아집니다.

4) POJO(Plain Old Java Object) 방식

Java EE를 사용할 때에 비해 인터페이스를 직접 구현하거나 상속받을 필요가 없어 기존 라이브러리를 지원하기 용이하고, 객체가 가볍습니다.

getter/setter를 가진 단순한 자바 오브젝트

1-3. Spring 왜 쓰는가?

스프링을 사용한다면 이미 신뢰성 있는 라이브러리와 풍부한 레퍼렌스와 함께 사용 할 수 있어서 개발 생산성이 급격히 증가합니다.

1-4. 정리

스프링은 자바 기술을 좀 더 쉽고 효율적으로 쓰기 위한 하나의 프레임워크입니다.
그 특징으로는 IoC, POJO, DI, AOP가 있으며 이 특징들은 Java 개발 생산성을 높혀줍니다.

2. Spring Boot

2-1. [Spring Boot]란?

스프링은 기존 기술의 복잡성을 크게 줄인 프레임워크이지만, 그럼에도 불구하고 스프링을 사용하기 위해서는 여러 가지의 사항들을 설정해주어야 합니다.

스프링 부트는 스프링으로 애플리케이션을 만들 때에 필요한 설정을 간편하게 처리해주는 별도의 프레임워크입니다.

2-2. 차이점

1) 디펜던시(Dependency)

스프링 프레임워크의 경우 디펜던시를 설정해줄 때 설정 파일이 매우 깁니다
모든 디펜던시에 대해 버전 관리도 하나하나 해줘야 합니다.

스프링 부트 프레임워크의 경우 디펜던시를 스프링 프레임워크 보다 쉽게 설정해 줄 수 있습니다. 버전 관리도 자동으로 해줍니다.

2) 컨피그레이션(Configuration)

스프링 프레임워크의 경우 컨피그레이션 설정을 할 때도 매우 깁니다.
모든 어노테이션 및 빈 등록 등을 설정해 줘야 합니다.

스프링 부트 프레임워크는 application.properties 파일이나 application.yml파일에 설정하면 됩니다.

3) 편리한 배포

스프링 프레임워크로 개발한 애플리케이션의 경우, war파일을 Web Application Server에 담아 배포했습니다.

스프링 부트 프레임워크의 경우, Tomcat 이나 Jetty 같은 내장 WAS를 가지고 있기 때문에 jar 파일로 간편하게 배포할 수 있습니다.

3. 참고

https://jerryjerryjerry.tistory.com/62
https://dbjh.tistory.com/77
https://javacpro.tistory.com/43
https://inpa.tistory.com/entry
https://joychae.tistory.com/27
https://programforlife.tistory.com/68

profile
프로그래머

0개의 댓글

관련 채용 정보