[CS 스터디] Spring

한주영·2023년 5월 4일
0

스터디

목록 보기
5/6

Spring기본

Spring

스프링 프레임워크는 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로써 스프링이라고 불린다.
동적인 웹사이트를 개발하기 위한 여러가지 서비스를 제공하고있다
대한민국의 공공기관의 웹 서비스 개발시 사용을 권장하고있는
전자정부 표준 프레임워크의 기반 기술로서 쓰인다.

특징
-경량 컨테이너로써 자바객체를 직접관리
각각의 객체생성, 소멸과 라이프 사이클을 관리-> 스프링으로부터 필요한 객체를 얻어 올수있다.
-IoC,DI,AOP등의 특징을 가진다.
-영속성과 관련된 다양한 서비스를 지원한다.(Ibatis,hirbnate)
-확장성이 높다

Spring MVC

spring에서 제공하는 웹 모듈로

Model,View,Controller세가지 구성요소를 사용해서
사용자의 다양한 HTTP Request를 처리하고 단순한 텍스트 형식의
응답부터 REST형식의 응답, view를 표시하는 html을 리턴하는 응답까지
다양한 응답을 처리할수있도록 해주는 프레임워크

1.Client의 요청이 들어오면 DispatchServlet이 가장 먼저 요청을 받는다.
2.HandlerMapping이 요청에 해당하는 Controller를 return한다.
3.Controller는 비지니스 로직을 수행(호출)하고 결과 데이터를
4.ModelAndView에 반영하여 return한다.
5.ViewResolver는 view name을 받아 해당하는 View 객체를 return한다.
6.View는 Model 객체를 받아 rendering한다.

Spring Boot

java프로그래밍언어로 엔터프라이즈급 애플리케이션을 구축하기 위한
오픈 소스 프레임워크
Spring FrameWork를 기반으로 구성되있다.

개발자가 시작하는데 필요한 모든 환경구성을 미리 제공하여
애플리케이션 구축 및 배보 프로세스를 단순화 하는것을 목표로 한다.

주요 이점
개발자가 상용구 구성이 아닌 비즈니스 로직 작성에 집중할수있도록 장려한다는것.
=>데이터베이스 연결 및 메시징 및 보안과같은 일반덕인 시나리오에 대해 적절한 기본값범위를 제공함으로써 달성된다.

확장성이 뛰어나다

dispathcer servlet

Spring Framwork의 핵심 구성요소이다
들어오는 HTTP요청을 수신,처리하고
처리를 위해 적절한 컨트롤러로 디스패치하는 일을 담당

Spring기반 웹 애플리케이션의 전면 컨트롤러 역할을 한다
들어오는 요청이 먼저 DispatcherServlet로 전달된다
그 다음 요청을 처리해야하는 컨트롤러를 결정하기 위해
핸들러 매핑에게 가고 적절한 컨트롤러가 결정이되면 처리를 위해 요청을 위임한다.
URL를 컨트롤러에 매핑하고 뷰 리졸버를 설정한다

IoC(Inversion of Control)

애플리케이션 개체 간 종속성을 관리하는데 사용되는 Spring의 개념
IoC를 통해 개발자는 더 모듈화되고 유연한 테스트하기 쉬운 코드를 작성할 수 있다.
종속성 관리 책임이 필요함에따라 객체를 생성하고 주입하는 스프링컨테이너로 이동한다.
Spring에서 IoC컨테이너는 ApplicationContext라고 한다
객체 생성 및관리를 담당하며 DI기술을 통해 런타임시 객체에
종속성을 주입한다.

종속성 관리 책임을 컨테이너로 이동함으로써 느슨하게 결합된 코드를
더 쉽게 작성할수있도록 하여 유지보수성,확장성을 향상시킬수 있다

Spring은 생성자 주입,Setter주입,필드주입을 통해 여러 유형의DI를 지원한다.

DI(Dependency Injection)

구성 요소 간의 느슨한 결합을 촉진하고 객체간의 종속성을 보다 쉽게 관리할 수 있게 해주는 강력한 기술
Spring은 DI를 구현하는 여러 방법을 제공
가장 일반적인 접근 방식 중 하나는 생성자 주입을 사용하는 것이다
이 접근 방식에서는 객체의 종속성이 해당 생성자를 통해 객체에 전달됩니다. Spring의 컨테이너는 객체 생성 및 종속성 주입을 담당합니다. 또 다른 접근 방식은 세터 주입을 사용하는 것입니다. 여기서 종속성은 세터 메서드를 통해 객체에 전달.

Spring에서 DI를 활성화하려면 XML 구성, Java 주석 또는 Java 코드를 사용하여 Spring 컨테이너를 구성해야 한다.
구성에서 종속성과 해당 관계를 정하고,
그런 다음 컨테이너는 객체를 만들고 필요에 따라 종속성을 주입한다.
전반적으로 DI는 애플리케이션의 모듈성, 유연성 및 테스트 가능성을 촉진하는 Spring 프레임워크의 핵심 기능을 제공한다

Bean, Component

Bean

Bean은 Spring의 컨테이너가 관리하는 객체
빈은 일반적으로 Spring 구성 파일에 정의되며 애플리케이션의 다른 구성 요소에서 액세스하고 사용할 수있다

Spring에서 bean을 정의하는 방법에는 여러 가지가 있다. 한 가지 방법은 요소를 사용하여 빈을 정의하고 해당 클래스, 속성 및 종속성을 지정하는 XML 구성을 사용하는 것이다. 또 다른 방법은 @Configuration 및 @Bean 주석이 달린 Java 클래스를 사용하여 빈을 정의하는 Java 구성을 사용하는 것

bean이 정의되면 Spring의 컨테이너는 bean의 인스턴스를 생성하고 수명주기를 관리, 여기에는 객체 생성, 종속성 주입 및 응용 프로그램 컨텍스트가 종료될 때 객체 소멸관리가 포함된다.

Bean은 Spring 애플리케이션에서 다양한 방식으로 사용될 수 있습니다. 예를 들어 빈은 서비스, 리포지토리, 컨트롤러 또는 Spring의 컨테이너에서 관리해야 하는 다른 유형의 객체를 나타낼 수 있고,
Bean은 종속성 주입을 사용하여 함께 연결할 수 있으므로 개별 구성 요소의 느슨한 결합과 쉬운 테스트가 가능하다.

•@Component

개발자가 직접 작성한 class를 빈에 등록하기 위해 사용한다.
@Component를 사용한 Bean의 의존성 주입은 @AutoWired 어노테이션을 이용하여 할 수 있다.

•@Service

Service Class에서 쓰인다.
비즈니스 로직을 수행하는 Class라는 것을 나타내는 용도로 쓰여진다.

•@Controller

Spring MVC에서 C에 해당하는 클래스의 용도

VO vs DTO vs DAO

VO

Spring Framework에서 VO(Value Object)는 데이터를 캡슐화하고 애플리케이션 계층 간에 데이터를 전달하는 방법을 제공하는 데 사용되는 객체 유형이다.
데이터를 VO에 캡슐화함으로써 데이터가 수정되지 않도록 보호하고 형식이 안전한 방식으로 쉽게 전달할 수 있다.
Spring에서 VO는 종종 DAO(Data Access Object) 패턴과 함께 사용된다. DAO는 데이터베이스 또는 기타 데이터 소스와의 상호 작용을 담당하며 일반적으로 검색된 데이터를 나타내는 VO 객체를 반환

DTO

Spring에서 DTO(Data Transfer Object)는 애플리케이션 계층 간에 데이터를 전송하는 데 사용되는 디자인 패턴이다. DTO는 종종 서비스 계층 패턴과 함께 사용되어 프레젠테이션 논리에서 비즈니스 논리를 분리한다.

DTO는 데이터를 캡슐화하는 데 사용된다는 점에서 VO와 유사하지만 반드시 변경 불가능한 것은 아니며 동작을 포함할 수 있다. DTO는 일반적으로 데이터 원본에서 여러 쿼리를 검색해야 하는 복잡한 객체를 나타내거나 프레젠테이션 계층에서 사용하기 전에 변환해야 하는 객체를 나타내는 데 사용된다.

DAO

Spring에서 DAO(Data Access Object)는 데이터베이스 또는 다른 데이터 소스에서 데이터에 액세스하는 세부 사항을 추상화하는 데 사용되는 패턴이다. DAO 패턴은 비즈니스 로직에서 데이터 액세스 로직을 분리하는 데 사용되므로 애플리케이션의 나머지 부분에 영향을 주지 않고 데이터 소스를 변경하거나 데이터 액세스 로직을 수정하기가 더 쉬워진다.

DAO는 일반적으로 특정 엔터티 또는 엔터티 그룹에 대한 CRUD(만들기, 읽기, 업데이트, 삭제) 작업을 위한 메서드를 제공한다.
DAO 패턴은 관계형 데이터베이스, NoSQL 데이터베이스 및 웹 서비스를 포함한 모든 데이터 소스와 함께 사용할 수 있다.

Spring에서 DAO는 일반적으로 JDBC 또는 JPA API를 사용하여 데이터 소스와 상호 작용한다.
Spring은 JDBC 기반 데이터 액세스를 위한 JdbcTemplate 및 SimpleJdbcInsert 클래스와 JPA 기반 데이터 액세스를 위한 JpaRepository 및 CrudRepository 인터페이스를 포함하여 데이터 액세스를 단순화하기 위한 몇 가지 추상화를 제공한다.

profile
백엔드개발자가 되고싶은 코린이:)

0개의 댓글