멋사 Backend 33일차 🦁

신재원·2023년 6월 5일

📢 Java

JVM vs JDK vs JRE 차이

JVM (Java Virtual Machine, 자바 가상 머신)

컴파일해서 나온 결과인 Java 바이트코드를 기계어로 변환하는 역할을 합니다.

JRE (Java Runtime Environment, 자바 실행 환경)

JVM 과 JAVA를 실행하는 역할을 하며 동작에 필요한 라이브러리를 담고있습니다.

JDK (Java Development Kit, 자바 개발 키트)

JAVA 개발을 위해서는 JDK의 설치가 필요하며 JRE도 포함하고 있습니다.
JDK 버전을 LTS (Long Term, 긴 기간 동안 사용, 안정적인 버전) 한 버전에 맞춰 설치
(최근에는 JDK 17 권장)

📢 Spring

🌍 인터넷과 웹 개발

인터넷이란?

  1. TCP / IP 통신을 기반으로 연결된 수많은 컴퓨터가 이루는 연결망
  2. 연결된 컴퓨터 들이 서로 정해진 규칙을 바탕으로 데이터를 주고 받는것

웹 개발 이란?

인터넷 서비스인 웹서비스를 개발하는 행위를 웹 개발이라고 한다.

클라이언트 - 서버 아키텍처

인터넷은 클라이언트 - 서버 아키텍처를 기반으로 동작하며
📍 클라이언트 는 웹 브라우저와 같은 애플리케이션을 통해 페이지를 "요청"
📍 서버 는 해당 요청에 대한 적당한 "응답" 을 하는 주체 (페이지 반환)

URL 이란?

우리가 흔히 알고 있는 인터넷의 위치를 나타내는 주소입니다.

URL 예시
https://www.jaewon.com/search?q=keyword&page=1

  • 프로토콜 : HTTPS
  • 호스트 : www.jaewon.com
  • 경로 : /search
  • 쿼리 파라미터 : q=keyword, page=1 (페이지 번호가 1인 검색결과 페이지)

Framework(프레임워크) 란 ?

웹 개발에는 기본적인 틀이 있습니다. 받을수 있는 요청을 정의 하고, 요청에 대한 응답을 정의하는 것입니다.
이런 반복적인 작업을 줄이기위해 선배 개발자들이 개발에 필요한 기능들을 모아놓은것을 Framework(프레임워크) 라고 합니다.
👀 ex ) Django (파이썬) SpringFramework (자바)

프레임워크의 역할 ?

  1. 일반적인 구조와 패턴을 제공하여 개발자들의 생산성과 개발시간을 단축
  2. 테스트, 디버깅과 같은 요구사항에대한 해결책을 제공해줘 품질을 유지

💪 어노테이션 이란?

Spring 애플리케이션을 더 효율적으로 작성하고 관리할 수 있도록 도와줍니다.

  • 작성은 @Autowired, @Service 등으로 사용할수있습니다.
  • 어노테이션 사용시 XML 설정 파일을 대체하고 자바 소스 코드에 필요한 설정 정보를 직접 작성할 수 있다.

📣 Spring IOC 컨테이너

오늘은 간단하게만 배웠으며, 추후에 자세히 다룰 예정 이라고 합니다.

  • 간단하게 말하여 일반적인 객체지향 클래스는 개발자가 new 연산자로 객체를 생성하고 배치하고 사용해야합니다. 하지만 Spring 에서는 new 연산자 사용없이 객체를 관리하지않고 사용할수 있습니다.

@Controller

Spring MVC에서 C (Controller) 이며 웹 애플리케이션의 요청 매핑과 처리를 담당합니다.

@Controller 어노테이션이 적용된 클래스는 Spring에 의해 스캔되어 빈으로 등록된다.

@Controller
public class DemoController {
	// return : 경로에 맞는 templates 패키지의 html 파일 반환
	
    // http://localhost:8080/home
	@RequestMapping("home")
    public String home() {
        return "home.html";
    }

	// http://localhost:8080/profile
    @GetMapping("profile")
    public String profile() {
        return "profile.html";
    }
	
    // http://localhost:8080/blog
    @RequestMapping(value = "blog", method = RequestMethod.GET)
    public String blog() {
        return "blog.html";
    }
}

@RequestMapping() vs @GetMapping()

  • URL을 매핑을 지정하는 데 사용되는 어노테이션 둘 다 URL과 해당 URL을 처리하는 메서드를 연결하는 역할을 합니다.
  1. @RequestMapping(value = "blog", method = RequestMethod.GET)
  2. @GetMapping("blog")
    ✔ 놀랍게도 두개의 코드는 같은 코드이다.

❗❗❗ 하지만 차이점이 있습니다.

@RequestMapping(value = " ", method = RequestMethod.POST)
@RequestMapping(value = " ", method = RequestMethod.PUT)

@RequestMapping() 은 GET, POST, PUT, DELETE 등
메소드 방식을 지정할수 있다는 것입니다.

@GetMapping() 은 그중에 하나의 방식인 요청만을 처리하며
따라서 단순히 요청만을 처리할경우에는 @GetMapping()을 사용하여 간결하고 명확한 코드로 작성할수 있습니다.

📸 templates 패키지

  • 주로 View 레이어를 구성합니다.
    (컨트롤러에서 반환한 데이터를 렌더링 해주는 역할)

🍘 번외

Spring 과 SpringBoot의 차이

Spring, SpringFramework 라고도 하며 Java 기반의 프레임워크 입니다.

  • Spring 을 사용하면서 IOC (제어의 역전), DI (의존성 주입), AOP (관점 지향 프로그래밍) 의 유연한 개발이 가능해졌습니다.

하지만 스프링 프레임워크는 기능이 많은만큼 환경설정이 복잡한 편입니다.

  • 이러한 점을 개선하기 위해 SpringBoot이며 Spring을 사용하기위한 설정의 많은부분을 자동화 해줍니다.
    ( Spring의 확장 버전이라고 생각하면 될것 같다 )

0개의 댓글