2025-05-08 [34일차] - Spring_part

dong_c·2025년 5월 8일

수업정리


수업페이지


Spring(스프링)

-> 프레임워크

🔷 프레임워크?

-> 내가 무언가의 작업을 하려고 할때 필요한 구성요소들을
대신 제공해주는 뼈대 (빵 구매하려고 할때 빵집 같은 느낌 )

스프링 프레임워크

-> 동적인 웹사이트를 개발하기 위한 여러가지 서비스를 제공 + 프레임워크 개념


  • 스프링부트/ 스프링부트 프레임워크란?

🔷 자바의 웹 프레임워크로 기존 스프링 프레임워크(Spring Framework)에
톰캣 서버를 내장하고 여러 편의 기능들을 추가하여
꾸준한 인기를 누리고 있는 프레임워크

(기존의 스프링 프레임워크는 개발자가 제어해야 할 것들이(설정,세팅) 많은데
이런 부분을 알아서 해주는 진화된 뼈대)

But, 제이쿼리 사례처럼 스프링부트 사용법만 알고 스프링을 모르면
안됨!


리퀘스트(요청) & 리스폰(응답)?


리엑트?

  • 자바스크립트 라이브러리

타임리프(Thymeleaf)?

  • 웹과 독립형 환경 모두를 위한 최신 서버 측 Java 템플릿 엔진
    컨트롤러가 전달하는 데이터를 통해 동적으로 화면을 만들어주는 템플릿.
템플릿 엔진 : 지정된 템플릿 양식에 데이터 모델을 전달하여 
 			 동적 컨텐츠를 만들어주는 소프트웨어

🔷 www.naver.com -> 네이버 서버 (네이버 페이지) 보고 싶다!


🔷 과정

① - 브라우저에 www.naver.com 입력 엔터!
② - www.naver.com 요청을 정말로 웹서버에 전달할 수 있게 통신
③ - 웹서버는 WAS (Web Application Servar) 요청을 전달
④ - WAS는 요청에 따라 응답을 만들어내기 위해 일처리
⑤ - 만들어낸 응답을 웹서버에 전달
⑥ - 웹서버는 브라우저에게 응답을 넘긴다
⑦ - 화면에 띄어준다!


🔷간결 정리

브라우저(요청 전달) -> 웹서버 -> WAS -> 웹서버 -> 브라우저


🔷 Lombok

@어노테이션을 제공하고 훈련에서 자동으로 개발자가 원하는 것을
생성/주입 방식으로 동작하는 서버입니다.

lombok 역할 : getter(게터)와 setter(세터)를 자동으로 만들어줌
             클래스 안에 직접 안 만들어도 실제로 있는것처럼

tmi) 스프링 부트 프로젝트 생성 시 오류 생기면
높은 확률로 롬복때문이어서 롬복 체크 해제 하고
다시 만들어보자!

.xml-> 태그로 이루어진 문서


스프링 부트 프로젝트 생성시

gradle, maven

① 프로젝트의 패키징의 목적
② 의존성 처리에 대한 설정
③ 배포에 도움을 주는 역할
④ 목적, 역할은 같다

gradle과 maven의 차이

  • maven이 더 오래됨

  • gradle이 더 신식

  • 둘의 사용방법이 다르다 -> 기존에 만들어져 있는 maven으로
    되어있는 녀석들은 gradle만 알면 이해가 안된다


스프링 부트 프로젝트 생성시 패키징
(패키지와 다름 -> 묶는것(압축의 의미)

  • 우리가 만들 프로젝트의 패키징 확장자를 정하는 부분

jar , war 패키징

기존의 웹들은 jar패키징을 하면 x 
웹서버에 배포가 안됐었음

그래서 기존의 웹은 무조건 war

but 웹 환경이 점점 개선되면서 둘 다 상관 x 
(jar가 war보다 더 가벼움)

Spring boot의 부가설정

Dependencies - 의존성들

-- project 생성시에 Dependencies를 추가할 때 넣는 요소들

  • Spring Web - Spring 웹 환경을 구축할 때 필요!
  • lombok - getter, setter 자동으로 생성
  • Spring Boot Devtools - 개발에 필요한 것들을 갖추고 있음

Dependency - 의존성

DI -> 의존성 주입

의존성을 주입(lombok의 예)

의존성 주입방식

  • 필드(변수-전역) 주입
    = 간편, 생략된게 많아서 꼬이는 현상이 발생(필드주입 방식 권장 x)

  • 생성자 주입
    = 조금은 번거롭긴하다, 생략된게 적어서 꼬이는 현상이 없다(적다) -> 객체 생성시 생성

  • 세터 메서드 주입
    = 조금은 번거롭긴하다, 생략된게 적어서 꼬이는 현상이 없다(적다) - > 메서드 호출시 생성


IoC -> 제어의 역전

  • 개발자가 직접 객체를 직접 만들지 않고
    (개발자가 직접 객체 만들던 방식인 new 안씀!)
    필요한 객체를 spring이 대신 만든다

    개발자에게 뭐가 필요한지 알고 스프링이 객체를 알아서 만들지?
    -> 어노테이션을 통해

    스프링에 들어가면 어노테이션이 되게 중요해진다

  • spring이 만들어내는 객체 -> bean


🔷 스프링 부트 게시판 제작

컨트롤러의 역할

참고영상

  • 0:00~ 11:00

    브라우저는 웹서버에게 요청 -> 웹서버가 컨트롤러에게 요청
    -> 컨트롤러가 하는 응답은 웹 서버로 -> 웹서버는 브라우저에게 응답을 전달

    • 클래스위에 @Controller이라는 어노테이션 생성하면 됨


내가 작성한걸 웹페이지에 띄우기

@Controller
public class UsrHomeController {

	@GetMapping("/usr/home/main")
	@ResponseBody
	public String showMain() {
		return "안녕하세요";
	}
	
}

쿼리스트링 : 이름이 중요


어노테이션

🔷 어노테이션 정리


@autowired
(생성자 주입시는 쓸 필요 x ??-> 이부분 다시 찾아보기(5/14))

-스프링의 의존성 주입(DI) 기능을 지원하는 어노테이션
-사용시 스프링이 자동으로 필요한 의존성을 주입하여
객채 간의 관계를 설정한다
-생성자, 필드, 세터 메서드에 적용할 수 있으며 스프링은
해당 위치에 알맞은 의존성을 주입

@autowired(오토 와일드) 참고자료

참고자료

profile
코딩초보

0개의 댓글