목록backend (10)
배움과 기록의 장

* 김영한님의 '스프링 핵심 원리 - 기본편' 인프런 강의 수강 후 복습을 위해 작성한 글입니다. 작성자의 이해에 따라 쉽게 풀어쓰거나 재구성 될 수 있습니다. 1️⃣ 스프링이란?스프링은 자바 언어 기반의 프레임워크로, 자바의 가장 큰 특징인 객체 지향을 살려 좋은 객체 지향적 애플리케이션을 개발할 수 있도록 돕는 도구이다. 스프링은 이러한 객체 지향 프로그래밍을 위한 노력으로, 다음과 같은 핵심원리를 도입하였다.IoC (Inversion of Control, 제어의 역전)DI (Dependency Injection, 의존성 주입)컨테이너이번 글에서는 각 핵심 원리에 대해 살펴보며, 스프링은 이러한 개념들을 통해 어떻게 객체 지향 프로그래밍을 하고자 하였는지 이해해보자. 2️⃣ 객체 지향 프로그래밍..
2023.2.13 작성 🔸 HTTP 헤더1) HTTP 헤더란?- Http 메시지의 구성요성 중 하나 - 클라이언트의 요청이나 서버의 응답에 포함되어, 부가적인 정보를 HTTP 메시지에 포함할 수 있도록 해줌 2) HTTP의 사용목적?- 클라이언트와 서버 관점에서의 HTTP 헤더 예시내부적으로 가장 많이 사용되는 헤더 정보: 'Content-Type''Content-Type'은 클라이언트와 서버가 주고받는 HTTP 메시지 바디의 데이터 형식이 무엇인지 알려준다.클라이언트와 서버는 'Content-Type'이 명시된 데이터 형식에 맞는 데이터를 주고 받는다. ex.우리는 'application/json'- 개발자들이 실무에서 사용하는 HTTP 헤더 예시개발자들이 직접 코드레벨에서 HTTP 헤더를 컨트롤 ..
2023.2.13 작성 🔸 JDBC란?- Java 기반 애플리케이션의 코드레벨에서 데이터베이스에 있는 데이터를 사용할 수 있게 데이터베이스에 접근할 수 있도록 Java에서 제공하는 표준 사양- Java 초창기(JDK 1.1) 버전부터 제공- 자바개발자는 JDBC API를 사용해서 다양한 벤더(Oracle, MS SQL, MySQL 등)의 데이터베이스와 연동가능( 데이터 액세스 기술의 기본이 되는 저수준(low level) API이기 때문에, JDBC의 구체적인 API 사용법을 알 필요는 없다. 하지만 Sping Data JDBC나 Spring Data JPA 같은 기술에서도 내부적으로는 JDBC를 사용하기 때문에, JDBC 동작 흐름 정도는 알아두면 Spring에서 지원하는 데이터 엑세스 기술을 사용하..
2023.2.13 작성 🔸 API 계층 구현Spring MVC에서 클라이언트 요청의 최종목적지인 API계층, 즉 Controller 클래스를 설계하고 구현한다. 🔸 프로젝트 환경 구성1. 샘플 프로젝트 소개1) 애플리케이션 이름: 커피주문 웹 애플리케이션 (커피 주문을 위해 필요한 정보를 제공하기 위한 서버용 웹애플리케이션)2) 애플리케이션 경계(앱 기능을 특정 범위로 제한하는 것) : 커피만 주문할 수 있도로 기능 제한3) 커피 주문을 위해 필요한 정보: Coffee , Member, Order4) 커피 주문 앱에서 제공할 기능: 주인이 커피정보를 등록,수정,조회,삭제하는 기능 등 2. 샘플 프로젝트 환경 구성- Project: Gradle-Groovy- Language: Java- Sprin..
2023.2.13 작성 🔸 Spring MVC (spring-webmvc 모듈) 란?- 서블릿(Servlet) API를 기반으로 클라이언트의 요청을 편리하게 처리해주는 모듈/프레임워크- 서블릿이란? 클라이언트의 요청을 처리하도록 특정 규약에 맞추어 Java코드로 작성하는 클래스 파일- 아파치 톰캣은 이러한 서블릿들이 웹 애플리케이션으로 실행이 되도록 해주는 서블릿 컨테이너 중 하나 1) Model - 클라이언트에게 응답으로 돌려주는 작업의 처리결과 데이터 2) View - Model 데이터를 이용해 클라이언트 애플리케이션의 화면에 보여지는 리소스를 제공하는 역할 - Spring MVC에 포함된 다양한 view기술과 view 형태 HTML 페이지 출력 : HTML를 직접 렌더링해서 클라이언트 ..
2023.1.12 작성 🔸 JSON 개념 숙지- JSON(JavaScript Object Notation) 이란? 데이터 교환을 위해 만들어진 객체 형태의 포맷 - JSON을 사용하는 이유 자바 언어를 이용하여 Map에 데이터를 저장한 후 이것을 다른 사용자에게 전송할 때, 상대 사용자도 자바 프로그램이어야 Map의 데이터를 읽을 수 있다. 하지만 모두가 같은 언어로 된 프로그램을 사용하지 않으니, 이런 경우에 데이터를 전송하r고 읽기 위해 만들어진 포맷이 JSON - JSON 형태로 변경하는 방법 jackson라이브러리에서 제공하는 ObjectMapper클래스를 사용하여 JSON형태로 변환Map message = new HashMap(){{ put("받는사람", "coco"); ..
2023.1.4 작성 🔸 예외처리 exception handling 란?- 예기치 않게 발생하는 에러에 대응할 수 있는 코드를 사전에 작성하여 프로그램의 비정상적인 종료를 방지하고, 정상적인 실행 상태를 유지할 수 있도록 하는 것-내부적인 요인(개발자의 코드작성 에러) , 외부적인 요인(하드웨어ex.메모리 문제, 네트워크의 연결끊김, 사용자 조작 오류)-발생 시점에 따라 컴파일에러, 런타임 에러로 구분 (+ 논리적인 오류가 있을 경우에 발생하는 논리적 에러까지 있음) 🔸 컴파일 에러 (Compile Time Error)-신택스 에러 syntax errors-자바 컴파일러가 오류를 감지 🔸 런타임 에러 (Run Time Error)-프로그램 실행 시 만나게 되는 에러-주로 개발자가 컴퓨터가 수행할 수..
2023.1.4 작성 🔸 제네릭과 제네릭의 장점-클래스나 메서드의 코드를 작성할 때, 타입을 구체적으로 지정하는 것이 아니라, 추후에 지정할 수 있도록 일반해두는 것, 특정 데이터 타입에 얽매이지 않게!-c++ 할 때 배운 템플릿 같은 거임-제네릭에 들어가는 타입으로 기본 타입이 아닌 래퍼클래스로 들어간다. int는 기본타입이고, int의 래퍼클래스는 Integer이므로 int가 아닌 Interger로 들어간다.-래퍼클래스(wrapper class)에 대한 자세한 내용은 검색해보기~ 100을 참조변수로 참조하며 객체의 값으로 받는 느낌? 🔸 제네릭 클래스 정의와 사용-정의 예시 타입 매개변수는 임의의 문자로 지정 자주 사용하는 타입 매개변수 T:Type, K:Key, V:Value, E:Eleme..
2023.1.4 작성 🔸 열거형 enum 이란-여러 상수들을 보다 편리하게 선언할 수 있도록 만들어진 자바의 문법요소 ex. 계절 -> 봄,여름, 가을, 겨울-쉽게 말하면 표지판 같은 것 ex. 당근을 들면 신고해주세요의 당근같은 것-JDK 1.5 이전 버전에서는 enum 문법을 지원하지 않았음 🔸 열거형 enum의 장점-여러 상수들을 보다 편리하게 선언하고 관리할 수 있음-상수명의 중복을 피할 수 있음-타입에 대한 안정성을 보장함 (Seasons.SPRING = 1; Framworks.SPRING =1; Seasons.SPRING == Frameworks.SPRING 이 true 가 되는 상황을 막을 수 있음)-switch 문에서도 작동이 가능함 (switch문의 조건 -> char, byte, ..

배열과 배열의 요소를 이리저리 할당/재할당 할 때, 주소값이 저장되는지 값이 저장되는지 헷갈릴 때가 많아서 혼자 이것저것 쳐봤다 배열의 요소와 값1. 코드 int[] a = new int[]{1,2,3,4,5}; System.out.println(a); System.out.println(a.length); for(int i = 0; i 2. 출력 3. 결론 b[2] = a[2] 를 하면 값만 저장되는 것이기 때문에, b[2] 값을 바꿔도 a[2]는 바뀌지 않는다. b와 a가 서로 전혀다른 배열을 참조하고 있기 때문에 b의 변화가 a에 아무런 영향도 미치지 않는다. 배열과 주소값1. 코드 b= a; // a라는 객체의 주소값이 저장됨 ..