충남대학교 컴퓨터공학과의 "실전코딩" 강의를 필기한 내용입니다.

이 문서는 보관이 목적이고, 관리되지 않습니다. 따라서 잘못된 정보가 포함되어 있거나 순서가 뒤죽박죽일 수 있습니다.

메이븐(maven)

  • homebrew처럼 자바 라이브러리에 대한 패키지를 관리하는 프로그램이다
  • ide에서 메이븐 프로젝트를 하나 만든 다음(메이븐 프로젝트는 정해진 프레임워크가 있는데 이렇게 해주면 자동으로 맞춰준다) pom.xml에 <dependencies> 태그를 만든 다음 maven central repository에서 <dependency> 태그를 복사해가 붙여넣으면 ide가 알아서 jar을 찾아서 꽂아준다
  • central repository가 아닌 다른 레포에서 다운받으려면 <repositories> 태그를 이용해 레포를 추가해준다(리눅스의 apt에서 ppa추가하는거마냥)
  • java -jar 경로 일케해주면 실행가능한(main함수가 있는) jar파일을 실행할 수 있다
  • 터미널에 mvn install을 하면 pom.xml에 있는 내용을 가지고 내 로컬 프로젝트를 jar로 바꿔준다

HTTP

  • Hyper Text Transfer Protocol
  • 데통에서 배웠제? 이것도 통신을 위한 하나의 약속이다
  • 우리가 뭔가를 요청하면 컴터가 그것을 http에 맞게 서버로 보내고 서버에서는 html파일을 또 http에 맞게 나의 컴터로 데이터를 전송하는 것이다
  • 서버에서 나한테 보낼때는 응답 코드 - response status을 같이 날린다 → 즉, 처리의 결과를 같이 보낸다 → 404 not found에서 404가 그 응답 코드이며 백의자리에 따라 성공, 에러 등의 종류가 나뉜다
  • HTTP request header : 여기에 요청사항의 여러 정보들이 담긴다. method에는 어떤 요청을 하는지(get : 정보를 가져옴 등등) accept에는 나의 브라우져가 어떤 미디어를 지원하는지(뭐 png파일은 읽을 수가 없다 등등)의 정보를 같이 보내게 된다

DNS

  • Domain Name Server
  • 뭐 .com이나 .io같은 도메인을 관리하고 사용자가 요청하면 그에 따른 ip를 돌려주는 등의 서비스를 해주는 서버

WAS

  • 웹 서버가 있고 그 안에 웹 컨테이너가 있는데 이놈이 DB랑 교신하면서 정적의 html파일이 아닌 html파일을 동적으로 변형시켜서 보내주는 그런 형식
  • 뭐 jsp를 생각하면 개발자가 jsp로 개발을 하면 그것을 웹 컨테이너가 자바파일로 바꾸고 실행을 해서 보여주는 형태
  • 이것도 옛날의 유물이다

현대의 웹서버

  • 이제는 프론트쪽과 백쪽이 나뉘어져 있다
  • 프론트쪽 부분은 AWS같은 클라우드에서 받아오고 데베에 접근해야 되는 요청의 경우에는 클라우드와는 분리되어있는 서버에서 받아서 보여주게 된다 - 프론트와 백을 처리하는 부분이 다르다 = 역할분담이 되어있는 셈
  • 클라우드에서는 프론트쪽을 받아오는데 대신 데베에 접근해서 채워넣어야 되는 부분들은 빠진 상태로 받아온다 → 그리고 채워넣어야 되는 부분은 서버컴에서 데베에 접근해서 채워넣게 된다

JSON

  • JavaScript Object Notation
  • 말그대로 자바스크립트 객체문서이다
{
    "key1_" : "value1_",
    "key2_" : "value2_",
    "key3_" : "value3_"
}
  • 이런식으로 {}로 묶여있는 애들이 알다시피 자바스크립트에서의 객체이다 {}가 객체다
  • 문자열은 반드시 “”로 묶어야 한다
  • 무조건 키 - 벨류쌍으로 구성돼야하며 : 로 구분짓는다
  • 대괄호 []로 묶어서 배열을 나타낸다
  • 그냥 별생각없이 이 규칙만 지키면 된다

API 통신을 위한 방법들

  • SOAP 통신 : 웹브라우져가 아닌 다른 응용프로그램쪽에서 api를 땡겨오거나 할때 쓰는 엄격하고 복잡한 프로토콜
  • REST 통신 : SOAP통신이 너무 어려워서 제대로 api들을 사용하지 못하는거같아서 나온 개념 - 지금은 얘가 주로 쓰인다 - 겨의 평정수준
  • 그냥 단순하게 클라이언트가 자원을 요청하면 그것을 서버에서 보내주는 형식으로 api가 통신된다
  • 자원 : 뭐 api에 들어있는 데이터들을 말하는 듯 - 얘네를 url에 복수형으로 이름지어서 포함시켜라
  • 동작 : 동작의 경우에는 http의 method에 이미 들어있으니 동작은 url에 포함시키지 말아라

Framework

  • 코드와 라이브러리를 합쳐서 프레임워크라고도 한다
  • 자바진영의 제일 유명한 프레임위크가 spring이며 여기에서도 많이 쓰는 기능이나 라이브러리는 이미 다 추가해놓은게 spring boot이다
  • spring은 웹 컨테이너등도 다 설정해줘야하지만 spring boot에는 이것도 내장되어 있다
  • 실행가능한 jar파일만 서버로 보내면 바로 서버로 작동하게 된다 - 바로 활용 가능하댄다

Spring IoC, DI

  • IoC : 스프링측에서 자동으로 객체들을 관리하는 것?
  • DI : new로 객체생성을 자동으로 해주는 것?
  • 뭐 굳이 귀찮게 new Class이지랄 안해도 @를 통한 annotation을 활용하면 필요한 객체의 생성과 삭제 등등을 스프링측에 위임한다는 개념