
본 포스팅은 Spring MVC 패턴에 익숙해지기 위해 방명록을 만들고 간단한 CRUD를 구현해 보는 과정이다. 환경 상 로컬이 아닌 AWS의 EC2 환경에서 작성하는데, 이에 대한 설정 방법은 [Spring Boot] aws ec2에서 Spring Boot 프로젝트 환경설정 포스팅 참고 Spring 학습이 주 목적이기 때문에 프론트 엔드의 UI는 Bootstrap을 이용할 예정이고, 이에 대한 설명은 생략한다. 코드 참고 : https://github.com/on1ystar/guestbook2 GitHub - on1ystar/guestbook2 Contribute to on1ystar/guestbook2 development by creating an account on GitHub. github.co..

Spring Boot를 사용하는 누구든, DB 연결 설정이나 JPA 관련 설정을 위해 application.properties 파일을 한 번 쯤은 작성해 봤을 것이다. 대충 감으로 어플리케이션의 속성 값을 지정해 주는 파일일 것이라고 추측은 할 수 있겠지만, 정확이 어떤 역할을 하며, 어떤 속성들을 가지고 있는 지 궁금해져 관련 포스팅을 하기로 했다. Goals application.properties 파일의 역할 application.properties을 사용하는 이유 설정 파일 우선 순위 application.properties 파일에 지정된 속성 값 사용 방법 application.properties vs application.yml application.properties 파일의 역할 Spring..
지네릭스(Generics)란? 지네릭스는 JDK1.5에서 처음 도입된 문법으로 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입 체크를 해주는 기능이다. 자바는 객체 지향 개념 중 하나인 다형성이란 개념이 있다. 이 다형성을 자바에서는 형변환으로 크게 지원하고 있는데, 이 형변환은 프로그래머에게 큰 편리함을 주지만 컴파일러에게는 큰 약점이 된다. 컴파일러는 변수 안에 담겨 있는 실제 값을 확인하지 않는다. 단지 참조 변수의 타입을 보고 문법적 오류가 있는 지를 판단한다. 이것이 컴파일러의 한계인데, 다형성에서 이로 인한 런타임 에러가 발생할 수 있다. 하나의 예시를 들어보자. import java.util.ArrayList; public class GenericsTest { pub..

링크 계층에서의 전송(1홉 통신) 시 문제 의식 우리가 네이버에서 제공하는 서비스들을 이용하려면 먼저 네이버 서버와 통신을 해야 하고, 그 방법들 중 가장 보편적으로 www.naver.com 의 도메인 주소로 접속합니다. www.naver.com이란 도메인은 DNS 서버에서 매핑되어 있는 네이버의 ip로 바꿔 전송해 줍니다. 즉, 우리는 네이버의 ip주소를 이용해 네이버 서버와 통신을 하게 되는 것이고, 이는 네트워크 계층 통신이라고 이해할 수 있습니다. 실제 네트워크 계층은 Internet Protocol을 이용하고, 이 ip를 통해 멀티홉 통신을 합니다. 하지만 네트워크 통신의 계층적 구조를 생각해 보면, 멀티홉 통신을 하기 위해서는 결국 1홉 통신이 먼저 가능해야 합니다. 어떻게 보면 멀티홉 통신은..

Layered Architecture OSI 7 계층에 대해 공부하기 전에, 우리는 네트워크 통신을 왜 7개나 되는 계층으로 나눈 것인가에 대해 궁금해야 합니다. 이에 대한 답을 우리 일상 생활에서 예를 들어 보겠습니다. 우리가 어딘가로 비행기를 타고 여행을 가야하는 상황이라고 생각해 보겠습니다. 먼저 티켓을 구매하고, 짐을 붙입니다. 그런 다음 게이트를 통과하고 비행기에 탑승 후 목적지로 출발합니다. 목적지에 도착을 하면 전의 과정들을 역순으로 행하면서 공항을 빠져나갑니다. 여기서 우리가 거치는 각각의 단계들은 기능별로 나뉘어 있습니다. 티켓을 사거나 확인하는 작업은 매표소에서 이루어지고, 짐을 붙이는 작업은 체크인 카운터 같은 곳에서 행해집니다. 이처럼 단계별로 행해지는 서비스도 다르고 직원들도 다릅..
소켓이란 소켓은 논리적으로 컴퓨터 네트워크를 경유하는 프로세스 간 통신의 종착점이다. 이 말이 무슨 말이냐면, 네트워크를 이용해 데이터를 송수신 하고 싶은 프로그램들은 소켓을 거쳐야 한다는 것이다. 따라서 아래와 같은 위치에 소켓 레이어가 놓이게 된다. 네트워크 응용 프로그램들은 소켓을 거쳐 데이터를 통신 망으로 전달함으로써 데이터를 송수신 하게 된다. 여기서 응용 프로그램은 어플리케이션 계층, 통신 망은 전송계층이므로 소켓은 그 사이에 놓이게 된다. 즉 소켓은 응용 프로그램에서 TCP/IP를 이용하는 인터페이스 역할을 한다. 소켓의 특징 파일과 비슷한 데이터 타입 소켓은 파일 디스크립터와 비슷한 형식의 데이터로 생성과 설정 과정이 끝나면 이를 이용하여 통신과 관련된 다양한 작업을 할 수 있는 간편한 데..

Goals DTO란? DTO를 사용하는 이유 DTO란? DTO는 Data Transfer Object의 약어로, 데이터 전송 객체를 의미한다. 다른 말로, 계층 간 데이터 전송을 위해 도메인 모델 대신 사용되는 객체이다. 이때, 계층이란 Presentation(View, Controller), Business(Service), Persistence(DAO, Repository) 등을 의미한다. DTO를 사용하는 이유 그럼 왜 도메인 모델(Entity) 대신 DTO를 사용하는 이유가 뭘까? 관심사의 분리(Separation of Concerns, SoC) 도메인 모델은 Data Access 계층에서 데이터가 저장되는 DB와 직접적으로 관련되어 있는 객체다. 테이블의 구조에 맞게 설계되는 도메인 모델은 초기..
Goals compileClasspath vs runtimeClasspath compileOnly vs runtimeOnly vs implementation compileClasspath vs runtimeClasspath compileClasspath와 runtimeClasspath는 Gradle에서 프로젝트의 의존성 관리를 위해 사용되는 두 가지 중요한 속성입니다. compileClasspath 프로젝트 소스 코드를 컴파일하는 동안 필요한 모든 클래스 파일과 라이브러리를 포함합니다. 컴파일 시간에만 필요한 의존성이 포함되며, 런타임에는 필요하지 않습니다. 이러한 의존성은 빌드 결과물에 포함되지 않습니다. runtimeClasspath 프로젝트를 실행할 때 필요한 모든 클래스 파일과 라이브러리를 포함합..
- Total
- Today
- Yesterday
- JPA
- Computer_Networking_A_Top-Down_Approach
- Spring Data JPA
- 방명록 프로젝트
- 지옥에서 온 git
- Spring Boot
- Spring
- Thymeleaf
- 김영환
- git merge
- 운영체제 반효경
- 스프링
- 스프링 mvc
- 파이썬 for Beginner 연습문제
- 패킷 스위칭
- spring mvc
- Do it! 정직하게 코딩하며 배우는 딥러닝 입문
- git
- jsp
- 스프링 테스트
- 생활코딩 javascript
- 쉽게 배우는 운영체제
- 선형 회귀
- git branch
- 파이썬 for Beginner 솔루션
- 프로그래머스
- Python Cookbook
- Gradle
- 쉘 코드
- 스프링 컨테이너
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |