1. Grandle 이해
Gradle 은 빌드 자동화 프로그램.
java 코드를 jar 파일로 만들어줌


build.grandle 은 grandle 기반의 스크립드로
source 코드를 빌드하거나 , library 들의 의존성을 관리함.
groovy 혹은 kotlin 언어로 작성됨. (앱 만들때 도 씀.)
(미리 구현된 automated 기능들을 lib 에서 가져와서 )
plugins {
id 'java'
id 'org.springframework.boot' version '3.2.1'
id 'io.spring.dependency-management' version '1.1.4'
}
group = 'com.sparta'
version = '0.0.1-SNAPSHOT'
java {
sourceCompatibility = '17'
}
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
tasks.named('test') {
useJUnitPlatform()
}
2. 버젼이 다르면 코드도 다를수 있다.
springframework version 이랑 spring.dependency-management version 이 있는데
버젼이 바뀔시에 사용가능했던 코드가 삭제/변경 될수 있다.
duplicated error 을 볼수도 있다.
plugins {
id 'java'
id 'org.springframework.boot' version '3.2.1'
id 'io.spring.dependency-management' version '1.1.4'
}
3. 서버의 대한 이해.
서비스 운영측 에서 데이터를 관리 하고 사용자 들에게 요청/소통 (http request/http response) 하는 장치.(개인 컴퓨터도 서버가 될수있음)
IP
컴퓨터 랑 서버 는 서로 ip 주소로 소통 한다. (ipv4 가 한계에(2019 년 에 40억 개가 다 주인이 있어져버림) 꽉 찬 이후부터는 ipv6 ). url 을 검색 하면 DNS 에서 ip 주소로 바꿔서 연결 시켜줌.
port
그 서버 나 라우터/스위치 보면 네트워크 연결 구멍 들 설정 할수 있는데. 이거시 네트워크 입구 번호라고 보면 된다.
API (Applitcation Programming Interface)
다른 소프트 웨어 랑 통신하기위해 만든 규칙.
e.g
Representational State Transfer(REST)는 API 작동 방식에 대한 조건을 부과하는 소프트웨어 아키텍처입니다. REST는 처음에 인터넷과 같은 복잡한 네트워크에서 통신을 관리하기 위한 지침으로 만들어졌습니다. REST 아키텍처 스타일을 따르는 API를 REST API라고 합니다. REST 아키텍처를 구현하는 웹 서비스를 RESTful 웹 서비스라고 합니다.
HTTP hyper text protocal 을 사용해서 restful api 를 구현.
POST : client 는 post 를 사용해서 서버에 데이터를 저장합니다. 여기에는 요청과 함께 데이터 표현이 포함됩니다. 동일한 post 요청을 여러번 전송하면 동일한 리소스를 여러번 생성하는 부작용이 있습니다.
GET : client 는 get 를 사용해서 서버에 지정된 resourse 를 액세스. Get 요청을 캐싱하고 RESTful API 여청에 피라미터를 넣어 전송하여 전송전에 데이터를 필터링 하도록 서버에 지시할수 있어요.
PUT : clients 는 put 을 사용해서 서버의 기존 resourse 를 업데이트 합니다. post 랑 달리 RESTful WEB 서비스에는 동일한 put 요청을 여러번 전송해도 결과는 동일합니다.
4. Aphache
정적인 컨텐츠 (변경이 없는 페이지). e.g 홈페이지
동적인 컨텐츠 (사용자 마다 다른 페이지). e.g 유저의 마이 페이지.
동적안 컨텐츠 를 사용할시 web server 가 Web Application Server(WAS) 에게 전달.
Aphaches 는 유명한 Web Application Server 들을 제공 해주는 곳 입니다.
tomcat , jboss 도 공부할 Web Application Server 입니다.

5. Spring 과 Spring Boot 의 차이.
Spring 프레임워크는 2004년에 1.0이 등장한 이후 20년가까이 사랑받으며(?) 계속해서 업그레이드 해온 현재는 Spring 6.0이 등장한 아주 오래되고 강력한 프레임워크입니다.

AOP, IoC/DI 등과 같은 아주 강력한 핵심 기능들을 가지고 있다.
- 하지만 이러한 핵심 기능들을 사용하기 위해서는 너무나도 많은 xml 설정들이 필요했습니다.
- 이러한 불편한 점들을 개선하기 위해 2014년 SpringBoot가 탄생 했습니다

SpringBoot 는 기존의 XML 을 설정 대신에 java의 Java Annotation 을 기반으로 설정을 적극저으로 사용하기에 무겁고 작성이 힘튼 xml 대신 Annotaion 을 사용하여 아주 간편하게 설정 할수 있습니다.
기본적으로 개발에 필요한 설정 정보들을 일반적으로 많이 사용하는 설정 값을 default로 하여 자동으로 설정해주고 있습니다.
또한 외부 라이브러리나 하위 프레임워크들의 의존성 관리가 매우 쉬워졌습니다.
기존에는 외부 라이브러리와 프레임워크를 사용하기 위해서 각각의 버전들의 호환성을 직접 확인해가면서 의존성들을 설정해야 했지만 SpringBoot에서는 spring-boot-starter-web 처럼 필요한 외부 라이브러리들과 프레임워크들을 의존성에 맞게 starter로 묶어서 제공해 줍니다.(이전처럼 각각의 버전 호환성을 직접 확인할 필요가 없어졌습니다).
마지막으로 SpringBoot의 강력한 점을 물어봤을 때 대답하는 것 중 하나가 바로 내장 Apache Tomcat 입니다.
Spring 프레임워크에서는 서버를 실행시키기 위해 Apache Tomcat을 직접 다운로드 받고 설정하고 프로젝트에 삽입 했어야함.
이러한 불편함을 해결하기 위해 SpringBoot에서는 기본적으로 starter-web dependency를 설정하면 자동으로 내장형 Apache Tomcat을 제공해 줍니다.말 그대로 Apache Tomcat이 내장되어있기 따로 다운로드 받고 설정하고 삽입할 필요없다).
6. Postman. (https://www.postman.com/) (설치도 있음)
API 개발을 빠르고 쉽게 구현할 수 있도록 도와주는 소프트웨어 플렛폼입니다
서버에 랑 통신 보내고 응답을 확인 간편하게 할 수 있도록 도와주는 플렛폼 중 하나가 Postman입니다.
'Spring' 카테고리의 다른 글
| Spring 기초 6 (영속성) (EntityManager) ( Persistence 기능) (변경 감지(Dirty Checking)) (0) | 2024.01.20 |
|---|---|
| Spring 기초 5 (Entity) (0) | 2024.01.20 |
| Spring 기초 4 (MVC) (JPA) (BEAN) (@Componet @Autowired) (Hibernate) (0) | 2024.01.20 |
| Spring 기초3 (데이터 받는 method) (Json 변환 String&Object) (@RequestParam @RequestBody) (HTTP 를 객체로) (0) | 2024.01.19 |
| Spring 기초2 (HTTP) (Lombok)(mvc)(정적 동적) (1) | 2024.01.18 |