부제) 자바 웹 어플리케이션이 구동되면 어떤 일이 발생할까요?
는 거짓말이다. 여러분 이거 다 거짓말인거 아시죠?~~~
사실 학부 때에 시작을 C++로 그 후 자바를 조금 배우긴 했다. 상속을 한다 ... 이정도만 기억난다. 정말 흐린기억속의 그대 자바... C++은 include iostream인가 이것만 기억남 ㅇㅇ 자바는 컴파일러란 원시 언어에서 목적 언어로 바꾸는 작업을 하는 것을 말함. 컴파일러로 변환된 코드는 별도의 파일로 저장된다.(JAVA같은 경우는 .java 파일을 컴파일 하면 .class 파일이 나옴.) 이런것도 기억나네...
회사에서 앞으로 개발할 어플리케이션이 자바 프레임워크로 해야할것같은데.... 스프링이라거나... 스프링부트라거나....
스프링부트는 먼지도 몰른다 ..... 둘의 차이는 ? 어슴푸레하게 넘겨짚어 보자면. 환경설정이 쉽다거나, 자동설정된 부분이 많다는 것???
임베디드 톰캣... 어노테이션 기반 configuration...
war 파일이란 또 뭘까? ㅡㅡ -> https://dololak.tistory.com/31
~ 링크의 내용 펼치기 ~ 접기
이클립스 배포를 위한 WAR(WebApplication Archive)파일 생성 방법
WAR(WebApplication Archive)
WAR 란 W ebApplication Ar chive의 약자로 말그대로 웹 어플리케이션 저장소이며 웹 어플리케이션을 압축해 저장해 놓은 파일이라고 생각하시면 됩니다.
개발한 웹어플리케이션 프로젝트가 WAS에서 돌아갈 수 있는 구조를 담고 있으며 JSP 및 서블릿 빈클래스 등의 소스가 컴파일 되어 저장되며 기타 이미지 및 자원들이 포함되어 있습니다.
출처: https://dololak.tistory.com/31 [코끼리를 냉장고에 넣는 방법]
접기
또 스프링부트 특징.
빌드하면 단일 jar 파일이 생긴다.
Web 어플리케이션의 경우, 내장 Tomcat을 시작 (Jetty와 Undertow로 전환 가능). Web 응용 프로그램이 아니라 보통의 Java 프로그램으로도 동작하게 할 수 있다. 출처: https://araikuma.tistory.com/8 [프로그램 개발 지식 공유]
ㅅ ㅓ블릿???? 서ㅓㅓㅓㅓㅓㅓ브ㅡㅡㅡㅡㅡㅡㄹ리ㅣㅣㅣㅣㅣㅣㅣㅣㅣㅣㅅ????
서블릿이랑 서블릿 컨테이너가 하는일 궁금해서 https://finerss.tistory.com/entry/%EC%84%9C%EB%B8%94%EB%A6%BF-%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88Servlet-Container (그림 및 설명) 서블릿은 그냥 서버에서 실행되는 프로그램이라고 생각하기로
~ 아무튼 스프링부트 시작해보긔 ~
1. 음. 일단 괜히 왜? 스럽지만 vscode에서 스프링부트 프로젝트를 생성했다...ㅎㅎ vscode 에서도 되긴 되네요~~ 착하지~~ 우쮸쮸
아델라킴 ㅋㅋ 맥북 vscode 기준으로 커맨드 + 쉬프트 + P 를 누르고 Debug: Start with 디버깅이던가 디버깅없이 스타트거나.. 취향껏 돌려주면 댐
현ㅈ ㅐ 내 맥북이가 돌리는 자바버전은 이겁니다
2. 내 demo 프로젝트의 pom.xml 을 보면
<? xml version = " 1.0 " encoding = " UTF-8 " ?>
< project xmlns = " http://maven.apache.org/POM/4.0.0 " xmlns : xsi = " http://www.w3.org/2001/XMLSchema-instance "
xsi : schemaLocation = " http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd " >
< modelVersion > 4.0.0</ modelVersion >
< parent >
< groupId > org.springframework.boot</ groupId >
< artifactId > spring-boot-starter-parent</ artifactId >
< version > 2.0.8.RELEASE</ version >
< relativePath /> <!-- lookup parent from repository -->
</ parent >
< groupId > com.example</ groupId >
< artifactId > demo</ artifactId >
< version > 0.0.1-SNAPSHOT</ version >
< name > demo</ name >
< description > Demo project for Spring Boot</ description >
< properties >
< java.version > 1.8</ java.version >
</ properties >
< dependencies >
< dependency >
< groupId > org.springframework.boot</ groupId >
< artifactId > spring-boot-starter-data-jpa</ artifactId >
</ dependency >
< dependency >
< groupId > org.springframework.boot</ groupId >
< artifactId > spring-boot-starter-web</ artifactId >
</ dependency >
< dependency >
< groupId > com.h2database</ groupId >
< artifactId > h2</ artifactId >
< scope > runtime</ scope >
</ dependency >
< dependency >
< groupId > org.springframework.boot</ groupId >
< artifactId > spring-boot-starter-test</ artifactId >
< scope > test</ scope >
</ dependency >
</ dependencies >
< build >
< plugins >
< plugin >
< groupId > org.springframework.boot</ groupId >
< artifactId > spring-boot-maven-plugin</ artifactId >
</ plugin >
</ plugins >
</ build >
</ project >
이렇게 jpa web같은 설정이 추가되어있다. 이거는 동영상보고 그대로 따라 만든것이라 프로젝트 생성할때, 고대로 추가한 설정부분이다.
jpa 는 또 뭐야? ㅇ //////// ㅇ
~ 응 JPA 설명 펼치기~ 접기
JPA(Java Persistent API)
JPA는 여러 ORM 전문가가 참여한 EJB 3.0 스펙 작업에서 기존 EJB ORM이던 Entity Bean을 JPA라고 바꾸고 JavaSE, JavaEE를 위한 영속성(persistence) 관리와 ORM을 위한 표준 기술이다. JPA는 ORM 표준 기술로 Hibernate, OpenJPA, EclipseLink, TopLink Essentials과 같은 구현체가 있고 이에 표준 인터페이스가 바로 JPA이다.
ORM(Object Relational Mapping)이란 RDB 테이블을 객체지향적으로 사용하기 위한 기술이다. RDB 테이블은 객체지향적 특징(상속, 다형성, 레퍼런스, 오브젝트 등)이 없고 자바와 같은 언어로 접근하기 쉽지 않다. 때문에 ORM을 사용해 오브젝트와 RDB 사이에 존재하는 개념과 접근을 객체지향적으로 다루기 위한 기술이다.
접기
아 ~ ORM 표준 인터페이스구낭 이걸 근데 따로 추가해조야대? 레일즈는 어떻게 햇엇즤? 흠
3. 그래서 로컬에서 "/hello"를 요청하면 시나리오가 이렇게 될거같다.
ㅎㅔ로쿠 서버에서 카페 IP가 바로 찍힌다. 헤로쿠 서버로 올린 디렉토리에서 바로 헤로쿠 콘솔으로 클라우드 서버에 붙을 수 있는듯
+ 남아있는 궁금증
스프링부트가 stand-alone인게 특징이면 스프링은 어떻길래 그런건가?
참고자료
http://blog.wishket.com/q-%EC%9B%B9-%EA%B0%9C%EB%B0%9C%EC%9D%98-%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8%EC%99%80-%EC%84%9C%EB%B2%84-%EC%95%8C%EA%B3%A0-%EA%B3%84%EC%8B%9C%EB%82%98%EC%9A%94/
https://www.jetbrains.com/help/idea/deploying-a-web-app-into-an-app-server-container.html
https://code.visualstudio.com/docs/java/java-spring-boot
https://www.slideshare.net/whiteship/ss-108533045
application.properties 를 수정할때 / https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html
JPA란 / https://onemooon.tistory.com/entry/JPA-JPA%EB%9E%80
JPA란 / https://blog.woniper.net/255
몬가 깔끔한 정리글 / https://developer.ibm.com/dwblog/2017/spring-boot/
JSP 라던지 Velocity 라던지 / http://millky.com/@origoni/post/1144
스프링도 핫 리로딩이 있네? spring-boot-devtools 모듈을 이용하여 / https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/html/howto.html#howto-hotswapping