0. DNS
일단 네이버,구글,스파르타 홈페이지등 각각 ip주소가 있는데 일반인들이 192.168.0.354이런 ip주소를 다 외우기 힘드니 이 주소에 이름을 정해준다는거다. 그래서 네이버는 www.naver.com 이렇게 정한거고 ip주소에 이름 정해주는 이런걸 DNS라 한다.
1. 그레이들 (Gradle)
* Gradle은 내가 작성한 java코드를 설정에 맞게 자동으로 Build를 해준다.
* Build란 소스 코드를 실행 가능한 결과물로 만드는 과정을 뜻한다.
* Gradle을 사용하면 간편하게 Java 소스 코드를 실행한 가능한 jar 파일로 만들어준다.
* build.gradle은 Gradle 기반의 빌드 스크립트이고 이 스크립트를 작성하면 소스 코드를 빌드하고 라이브러리들의 의존성을 쉽게 관리할 수 있다. 작성은 groovy 나 kotlin 언어로 할 수 있다.
* 개발을 하면서 필요로하는 외부 라이브러리들을 dependencies 부분에 추가하면 Gradle이 해당 라이브러리들을 Maven Repository 와 같은 외부 저장소에서 자동으로 다운로드해온다.
(기억을 살려보면 장고에서는 외부 라이브러리를 pip로 설치했고,지금 다시 알아보니 requirements.txt 만들고 여기에
djangorestframework==3.11.0 이런식으로 라이브러리 목록들 작성해둔다는데 requirements.txt 사용이유는 이미 많은 외부 라이브러리를 깃에 푸시하면 용량을 많이 차지해서 그렇다. 이러고 나중 다운 받을땐 pip install -r requirements.txt )
* 라이브러리 다운로드 해온거는 build.gradle 5칸 밑에 있는 External Libraries 눌러보면 확인 할 수 있다.
2. API,인터페이스
* api는 다른 소프트웨어 시스템과 통신하기 위해 따라야 하는 규칙을 말한다. 그러니깐 get,post,delete,patch등이 api에 속한다.
* 인터페이스는 두 개의 시스템 또는 장치가 서로 소통할 수 있도록 만들어진 연결 지점이나 교차점을 의미한다.
즉,사용자가 기기를 쉽게 동작시키는데 도움을 주는 시스템을 의미한다
3. Restful API
*get,post,delete,put,patch등을 말한다.
4. HTTP 상태코드
* 1xx: 요청이 수신 되었으며 처리가 계속되고 있고, 주로 웹 브라우저와 같은 클라이언트가 서버와의 연결 상태를 확인하기 위해 사용.
* 2xx: 라이언트의 요청이 성공적으로 처리 되었다.
* 3xx: 클라이언트가 추가적인 조치를 취해야한다를 나타내고, 주로 페이지 이동, 리다이렉션 등에 사용
* 4xx: 클라이언트에 오류가 있음을 나타내고, 주로 클라이언트의 잘못된 요청, 인증 오류 등에 사용한다.
보통 404를 많이 보긴하고 404는 클라이언트가 요청한 페이지나 리소스를 서버에서 찾을 수 없음을 의미한다.
* 5xx: 서버에 오류가 발생했음을 나타낸다.
5. 테스트 코드
* 테스트 코드는 배포전 버그를 최대한 많이 찾아내기위해 사용한다.
* 스프링에서 테스트 할 수 있게 해주는 JUnit이라는 프레임 워크가 있는데 build.gradle에 dependencies 부분 보면
testmplementation이 JUnit 프레임워크다.
* 이제 사용법은 테스트 하고 싶은 파일 내에서 컨트롤+쉬프트+T누르고 ok하면 이렇게 생성된다
(캡처는 Calculator.java파일을 예시로 한거)
* 테스트 코드 보면 메소드위에 Test어노테이션을 명시해줘야하고, Assertions.assertEquals()메소드는 내가 예상한 값이랑 실제 결과랑 같은지 체크해주는거다. 매개변수 첫번째에는 예상값,두번째는 실행 결과값 넣어준다.
6. Lombok
* Lombok은 자바 프로젝트를 진행하는데 거의 필수적으로 필요한 메서드/생성자 등을 자동 생성해줌으로써 코드를 절약할 수 있도록 도와주는 라이브러리이다.
* 쉽게 말하면 Getter,Setter등 여러개 있는데 이두개만 보고 말하면 해당 필드는 private이니 getUsername(),getContents(),setUsername(),setContents()등이 필요한데 이걸 다 적으면 코드가 길어지고 더러워보이니
@Getter,@Setter 어노테이션을 이용해서 ↑존재하지만 안보이게 하고 코드 짧게,깨긋하게 보이도록 하는거다.
@Getter
public class Memo {
private String username;
private String contents;
}
*예시로 이 코드가 있을때 먼저 오른쪽 상단에 Gradle-Tasks-build에서 build 더블클릭. 그리고 잘 생성됬나 확인하는 방법은 build패키지의 clases에서 보면 된다.
* 이러고 이제 작업하는 파일에서 memo객체 만들고 memo.setUsername("seok") 해도 memo파일에서는 setUsername 메소드가 명시되어 있지 않은데 @Setter로 인해 잘 동작한다.
* @NoArgsConstructor: 매개변수 없는 기본 생성자를 생성
Memo memo = new Memo();
* @AllArgsConstructor: 모든 필드 값을 매개변수로 받는 생성자 생성
Memo memo = new Memo("seok","스프링");
* @RequiredArgsConstructor: final 제어자가 붙은 필드를 매개변수로 가진 오버로딩된 생성자 생성
위에 memo클래스의 username에 final이 있을시 RequiredArgsConstructor하면 ↓ 생성된다.
Memo memo = new Memo("seok");
* @NoArgsConstructor랑 @AllArgsConstructor는 동시에 같이 적어도 가능한데 필드에 fianl있을시@RequiredArgsConstructor랑 @NoArgsConstructor는 당연 안된다. 하지만 @AllArgsConstructor는 당연 같이 가능이고
7. application.properties
* application.properties는 Spring과 관련된 설정을 할 때 사용되는 파일이고, SpringBoot를 사용하면 개발에 필요한 설정 정보들이 자동으로 설정된다했는데 application.properties을 사용하면 자동으로 설정되고 있는 설정 값을 쉽게 수정할 수 있다.
* 뿐만아니라 DB 연결 시 DB의 정보를 제공해야하는데 이러한 경우에도 이 파일을 이용하여 쉽게 값을 전달할 수 있다.
*Apache Tomcat을 사용하여 서버를 실행하면 기본 port 설정이 8080이 되있는데 serveer.port=8081로 설정하면 서버의 port 번호를 ‘8080’에서 ‘8081’로 바꿔서 실행시킬 수 있다.
(처음 팀 미니 프로젝트할때도 application.properties에서 DB의 정보를 입력한듯하다.)
'Spring' 카테고리의 다른 글
Spring_4주차-(1) (0) | 2023.11.10 |
---|---|
Spring_3주차-(1) (0) | 2023.11.07 |
Spring_2주차-(2) (0) | 2023.11.02 |
Spring_2주차-(1) (0) | 2023.11.02 |
Spring_1주차-(2) (0) | 2023.11.01 |