백/Spring, Spring Boot

[Spring] 스프링(Spring)이란?

연지양갱 2023. 6. 21. 10:53
728x90
반응형
SMALL

<< IoT빅데이터 응용 교육 과정 1일차 >>

 

교재 

스프링 코딩 공작소

 

온라인 교재

https://thebook.io/

 

더북(TheBook)

더북(TheBook): (주)도서출판 길벗에서 제공하는 IT 도서 열람 서비스입니다.

thebook.io

위 더북(TheBook)에서 해당 교재의 이름을 검색하면 자료를 받을 수 있다!

꼭 활용하는것을 추천합니다

 


1장 스프링과 스프링 MVC

 

1.1.1 스프링이란?

스프링은 표준 및 엔터프라이즈 자바 응용 프로그램을 신속하게 개발하는 데 널리 사용되는 오픈 소스 프레임워크입니다.

 

 

** 프레임워크란?!

지원을 제공하고 애플리케이션, 소프트웨어 또는 시스템의 개발을 용이하게 하는 개념적 구조 또는 일련의 지침

== 개발자가 프로젝트를 구축할 수 있는 기반 또는 뼈대 역할을 합니다.

즉 프로젝트를 빠르고 쉽게 수행할 수 있도록 도움을 줄 수 있는 도구

프레임 워크에 대해서 다시 포스팅 하겠습니다

https://chat.openai.com/share/fc006657-be7d-4d25-bdd7-a970bd3cc44a

 

ChatGPT

A conversational AI system that listens, learns, and challenges

chat.openai.com

 

 

 

스프링의 장점

- Java EE 플랫폼에서 웹 애플리케이션을 신속하게 개발할 수 있음

- 모든 인프라 요구 사항을 제공하는 경량급 오픈 소스 프레임워크

- 규모가 큰 애플리케이션을 개발할 때 복잡함을 제거하여 훨씬 빠르고 간편하게 개발하고 효율적으로 구현할 수 있어 생산성과 품질 면에서도 우수함

- 개발이 완료된 후 사후 관리를 위한 유지 보수도 손쉽게 할 수 있음

- 테스트가 쉬우며 재사용이 가능한 코드를 작성

- 특정 클래스에 대한 수평적 처리까지 가능

 

 


 

 

1.1.2 꼭 알아야 할 스프링의 주요 특징

 

순수한 비즈니스 로직을 구현하는 것 외에도 기술적으로 고려해야 할 사항이 많은 대규모 애플리케이션 개발의 복잡성을 간소화

 

 

** 비지니스 로직

업무에 필요한 데이터를 처리하는 애플리케이션의 일부를 의미함

데이터 입력, 수정, 조회, 보고서 처리 등을 수행하는 루틴

보이지 않는 곳에서 일어나는 각종 처리를 의미

사용자 인터페이스와 비지니스 로직으로 구성됨

 

 

 

 

자바 객체를 위한 POJO 지원

별도의 API(Application Programming Interface)를 이용하여 애플리케이션 코드를 따로 작성하지 않는 정책을 쓰고 있음

스프링에서는 자바 서블릿 코드를 작성할 때처럼 인터페이스를 반드시 구현해야 한다거나 HttpServlet 클래스를 상속하지 않아도 됨

특정 데이터베이스나 서버에 의존하지 않는 자바 클래스만으로 구성해도 프로그래밍이 가능

요런 개념들을 POJO(Plain Old Java Object)라고 한다.

 

 

- 특정 환경이나 구현기술에 종속적인 코드를 비지니스 로직에서 분리함

- 코드가 훨씬 단순

- 서버 없이도 테스트할 수 있어 개발 속도도 빠름

- 어떤 규약이나 규제가 없으므로 객체지향적 설계가 자유로움

 

 

 

객체 간 결합도를 줄이는 의존성 주입 지원

의존성 주입 : 객체 간 관계를 관리할 때 사용하는 기법

객체 또는 구성 요소 사이의 의존 관계를 직접 생성하거나 제어하는 것이 아니라 외부의 빈(bean)설정 파일을 활용하여 스프링 컨테이너가 자동으로 연결하는 방식

 

 

컨테이너가 객체 의존 관계를 자동 연결

개발자가 API로 의존적인 객체들의 관계에 관여하지 않아도 됨

설정 파일(.xml)에 정보를 추가

스프링 의존성 주입을 이용하면 코드가 훨씬 더 간단하고 이해하기 쉬우며, 테스트하기도 쉽습니다.

프로그램을 쉽게 설계할 수 있고, 이미 개발된 프로그램을 변경해야 할 때도 변경 사항을 적용하기가 쉬워 확장성이 매우 좋습니다

또한 각 객체 간 의존 관계와 객체들의 생명주기를 간편하게 개발하거나 유지 보수할 수 있는 장점이 있습니다.

 

** 객체 간 의존 관계를 관리하는 방법

의존 관계를 관리하는 방법은 크게 생성자에 의존 객체를 인자로 하는 방법

생성자 의존성 주입

setter 메소드 의존성 주입

 

 

느슨한 결합도

두 객체 간 의존 관계를 줄이는 것

-> 인터페이스를 구현 : 의존 객체를 바꾸지 않고 구현한 클래스로 변경하여 사용할 수 있음)

 

 

 

공통 관심사*** 

데이터베이스와 연동하는 과정에서 

공통 관심사를 효과적으로 애플리케이션을 삽입하는 기술

애플리케이션 내부에서 공통 관심사를 비즈니스 로직으로 분리하고, 이 공통 관심사를 효과적으로 애플리케이션에 삽입하는 기술이 관점 지향 프로그래밍

 

애스팩트 : 핵심적인 기능에서 부가적인 공통 관심사를 분리하여 독특한 공통 모듈을 만들어 설계하고 개발하는 방법

 

AOP

현재 주류인 객체 지향을 대신하기보다 보완하는 패러다임

 

 

 

 

트랜잭션

쪼갤 수 없는 최소 단위의 작업

 

트랜잭션 관리 방법

- 프로그래밍적 트랜잭션

- 선언적 트랜잭션

 

 

프로그래밍적 트랜잭션(programmatic transaction) 처리

코드에서 트랜잭션 범위를 정교하게 정의할 수 있지만, 트랜잭션이 스프링의 종속적인 코드가 될 가능성이 큽니다.

 

선언적 트랜잭션 처리(declarative transaction)

코드를 수정하지 않고도 트랜잭션을 적용하거나 변경

 

 

 

 

 

 

반응형