Spring 개념

두부링·2025년 3월 11일

Spring

목록 보기
15/24

Spring 개념

Spring 이란?

프로그래밍 언어를 좀더 편리하게 작성하도록 도와주는 프렘임워크

사용 이유

  • 반복코드 작성을 줄이고 효율적인 개발
  • 객체관리 용이
  • 확장성과 유연성
  • 안정적인 트랜직션 처리
  • Rest API 개발 용이

장점

IOC (객체 관리) 와 DI(객체 주입) 와 AOP(공통 기능 분리)

IoC(Inversion of Control)와 DI(Dependency Injection)

  • IoC: 객체의 생성 및 생명 주기를 개발자가 직접 관리하지 않고, 스프링 컨테이너가 관리하는 개념(제어의 역전).
  • DI: 객체 간의 의존성을 스프링이 자동으로 주입해주는 방식.
    → 방법: 생성자 주입, 필드 주입, setter 주입

AOP(Aspect-Oriented Programming)

핵심적인 비즈니스 로직으로부터 횡단 관심사를 분리하여 관리하는 방식

주요 개념:
Advice (공통 기능)
Join Point (실행 지점)
Pointcut (적용 범위)
Aspect (Advice + Pointcut 조합)

스프링 빈(Spring Bean)과 빈 설정 방법

스프링 빈: 스프링 컨테이너에서 관리하는 객체.
설정 방법:
어노테이션 기반(@Component, @Service, @Repository)
Java 기반(@Configuration, @Bean)
XML 기반(beans.xml에서 설정)

Spring MVC 구조와 동작 원리

  • 개발 영역을 Model View Controller 로 구분하여 각 역할에 맞는 코드를 작성하는 방식
  • UI 영역과 비즈니스 로직 영역을 구분하여 개발함
  • 각 영역
    Model : 애플리케이션의 정보(데이터)
    View : 인터페이스 영역(UI)
    Controller : 데이터와 비즈니스 로직 사이의 상호동작

트랜잭션 관리 (@Transactional)

트랜잭션: 하나의 작업 단위를 묶어서 실행하는 개념 (Commit 또는 Rollback).
스프링에서 트랜잭션 관리 방법:
선언적 트랜잭션 (@Transactional) → 주로 사용됨
프로그래밍 방식 트랜잭션 (PlatformTransactionManager 사용)

Spring Boot vs Spring Framework

Spring Framework: 설정이 복잡하고, 수동 설정이 많음.
Spring Boot:
자동 설정(@SpringBootApplication)
내장 웹 서버 (Tomcat 포함)
간편한 의존성 관리 (Starter 패키지 지원)

Restful API

  • REST(Representational State Transfer) 원칙을 따르는 API를 의미한다.
    즉 웹에서 데이터를 주고받는 방식인데, HTTP 프로토콜을 활용해서 자원을 표현하고 조작하는 구조

RESTful API의 장점

✅ 클라이언트-서버 분리: 프론트엔드와 백엔드가 독립적으로 개발 가능
✅ 확장성: 다양한 플랫폼(웹, 모바일 등)에서 사용 가능
✅ 유지보수 용이: REST 원칙을 따르면 API 설계가 깔끔해짐

📌 한 줄 요약: RESTful API는 자원 중심의 URL 설계와 HTTP 메서드를 활용하는 API

API

  • 소프트웨어 간의 통신을 위한 규칙을 정의하는 인터페이스

어노테이션

@Repository
데이터 액세스 계층, dao 에 붙히는 어노테이션
@Bean
메서드에서 반환하는 객체를 Spring Bean으로 등록
@RestController = @Controller + @ResponseBody
응답을 모두 json 형식으로 한다.
@ResponseBody
문자열은 그대로 ,컨트롤러 메서드의 반환 값을 JSON 또는 XML 형식변경해서 응답
@RequestParam
파람에 있는 내용을 뽑기
@Transactional
단일 메소드로 묶음
@GeneratedValue 는 시퀀스가 자동으로 만들어지고 사용되게 해준다.
@Configuration //설정 클래스라고 알려준다.

RestController

관련 어노테이션
@ResponseBody RestController 에서는 @ResponseBody가 기본으로 json으로 응답한다.

Controller 에서 요청 파라미터 추출, json 응답

  • RestController 에서는 json 문자열을 뽑기위해서는 @RequestBody로 추출하고 json 으로 응답함

thymeleaf 활용

Restful API의 여러가지 요청 메소드의 의미와 이해

Restful API 의 요청
앱에서도 밑의 방식처럼 요청을 보내서 데이터를 받아온다.
json 응답을 받아서 앱 UI에 출력

GET 방식에는 파람 쿼리를 타고 갈 수도 있음
GET /posts (?pageNum=)

post 추가
POST /posts

1번 post
GET /posts/1

------밑의 방식 javascript 로 페이지 요청을 할 때 사용 가능-------------------

1번 delete
DELETE /posts/1

1번 post 전체필드 수정
PUT /posts/1

1번 post 일부 수정
PATCH /posts/1

mybatis dao 와 Mapper.xml 사이의 관계

  • dao 에서 Mapper 를 SqlSession session 으로 주입받아서 활용함
  • session 의 selectOne 인지 selectList 인지 구별하기
  • dao 에서 이름.코드이름, 보낼 파라미터 타입, 결과 타입 확인하기

lombok 활용

  • dto 를 builder로 생성할 수 있음
  • @builder, @getter, @setter, @data(getter, setter 사용 안해도 ok), @no생성자, @all생성자
  • 데이터의 타입을 @Alias("memberDto")로 지정해서 mapper 에서도 활용 가능
profile
하이하잉

0개의 댓글