본문 바로가기
Programming

[Programming] Spring 이란?

by BTC_금쪽이 2023. 11. 24.

베하!

하루하루가 다르게 점점 추워지는 날씨에 감기 조심하세요!

이번주도 새로운 정보로 여러분들을 찾아뵙습니다~!

 

 

이번주는 Framework 중에 하나인 Spring 입니다.

JAVA를 사용하는 곳이라면 흔히 사용하시는 프레임 워크이니 만큼 간략한 정보들을 가지고왔습니다!

 

Spring 이란?

JAVA의 웹 프레임워크로 JAVA 언어를 기반으로 사용합니다.

JAVA로 다양한 어플리케이션을 만들기 위한 프로그래밍 틀이라 할 수 있습니다.

JAVA를 활용하는 프로젝트가 많아지고 규모가 커짐에 따라 다양한 기술들이 사용되고 있습니다.

이러한 기술들을 더욱더 편하게 사용할 수 있도록 해주는 것이 바로 Spring이라고 할 수 있습니다.

 

Spring은 이런 중복코드의 사용률을 줄여주고, 비즈니스 로직을 더 간단하게 해줄 수 있습니다.
이러한 장점을 기반으로 Spring을 사용하면 다른 사람의 코드를 참조하여 쓰기 편리한데, 오픈소스를 좀더 효율적으로 가져다 쓰기 좋은 구조라는 것입니다.

 

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

Frame Work 란?

그렇다면 여기서 말하는 Framework란 무엇일까요?

프레임 워크는 어떠한 목적을 달성하기 위해 복잡하게 얽혀 있는 문제를 해결하기 위한 구조이자 약속이며, 소프트웨어 개발에 있어서 하나의 뼈대 역할을 합니다.

자주 쓰일 만한 기능들을 한데 모아 놓은 유틸(클래스)들의 모음(집합)인 것입니다.

 

개발자가 구현하고자 하는 기능을 쉽게 제공해줄수 있다는 점에서 프레임 워크는 라이브러리와 비슷한 면이 있습니다.

 

 

Spring의 특징

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

  • 개발자는 JAVA 코딩시 new 연산자, 인터페이스 호출, 데이터 클래스 호출 방식으로 객체를 생성하고 소멸시킵니다.
  • IoC란 인스턴스 (객체)의 생성부터 소멸까지 객체 생명주기 관리를 개발자가 하는게 아닌 스피링(컨테이너)가 대신 해주는 것을 말합니다.
  • IoC는 개발자가 실수할 수 있는 생명주기 관리를 대신 해줍니다.
  • 어권이 개발자가 아닌 IoC에게 있으며 IoC가 개발자의 코드를 호출하여 그 코드로 생명주기를 제어할 수 있습니다.

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

  • 프로그래밍에서 구성요소 간의 의존 관계가 소스코드 내부가 아닌 외부의 설정파일을 통해 정의되는 방식입니다,
  • 코드 재사용을 높여 재사용을 높여 소스코드를 다양한 곳에 사용할 수 있으며 모듈간의 결합도도 낮출 수 있습니다.
  • JAVA에서 데이터를 저장하고 가져오는 기능을 외부의 Oracle Database를 사용할 수도 있고, JDBC, iBatis, JPA 등 다른 프레임 워크를 이용할 수 있습니다.

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

  • 로깅, 트랜잭션, 보안 등 여러 모듈에서 공통적으로 사용하는 기능을 분리하여 관리 할 수 있습니다.
  • 여러 객체에 공통으로 적용할 수 있는 기능을 구분함으로써 재사용성을 높여주는 프로그래밍 기법입니다.

4. POJO(Plain Old Java Object) 방식

  • POJO는 Java EE를 사용하면서 해당 플랫폼에 종속되어 있는 무거운 객체들을 만드는 것에 반발하여 나타난 용어입니다.
  • 별도의 프레임 워크 없이 Java EE를 사용할 때에 비해 인터페이스를 직접 구현하거나 상속받을 필요가 없어 기존 라이브러리를 지원하기 용이하고, 객체가 가볍습니다.
  • getter/setter를 가진 단순한 자바 오브젝트를 말합니다.

 

'Programming' 카테고리의 다른 글

[Vue] Vue.js LifeCycle  (0) 2023.12.07
Vue Router : 네비게이션 가드  (1) 2023.12.06
[Vue]Vue.js 컴포넌트 디자인 패턴  (1) 2023.11.24
Java의 List Stream()  (0) 2023.11.24
[Django/React] 장고와 리액트 연동 (3)  (1) 2023.11.21

댓글