Java
-
[SpringBoot - Step 4] 스프링 프레임워크 & DispatcherServletJava/SpringBoot 2.0 2019. 1. 13. 01:04
스프링이란? 엔터프라이즈 애플리케이션을 개발하기에 적합한 프레임워크로 객체 관리를 해주는 빈 컨테이너 프레임워크이다. 스프링 프레임워크 탄생?최초 EJB(Enterprise Java Bean)이였는데 경량화되고 간소한 컨테이너를 선호하게 되어POJO(Plain Old Java Object)가 만들어 졌다.그후 “웹 애플리케이션 컨테이너와 상관없이 독립적으로 빈의 생명주기를 관리할 수 있는 스프링 프레임워크가 만들어 졌다” IOC 패턴IoC(Inversion of Control) = 컨테이너 : 제어의 역전프로그램의 생명주기에 대한 주도권이 웹 애플리케이션 컨테이너에게 있다. 즉 객체의 생성 부터 생명주기의 관리까지 모든 객체에 대한 제어권이 바뀌었다는 뜻 IoC특징 두가지- 하이레벨 모듈은 로우레벨 모듈..
-
[SpringBoot - Step 3] Servlet/서블렛Java/SpringBoot 2.0 2019. 1. 13. 00:33
ServletServlet이란 JVM 기반에서 웹 개발을 하기 위한 명세이자 API이다. Servlet을 실행 하기 위해서는 웹 애플리케이션 컨테이너가 필요하다. Servlet 생명주기 초기화(Initialization)서블릿 인스턴스를 생성하고 리소스를 로드하는등 클래스 생성자의 초기화 작업과 동일한 역할을 수행한다.서비스(Service)클라이언트의 요청에 따라서 호출할 메서드를 결정한다.소멸(Destory)서빌릿을 언로드한다. 언로드는 런타임에러, 컨테이너 종료시 발생한다. Servlet 동작 사용자(클라이언트)가 URL을 클릭하여 HTTP Request를 Servlet Conatiner로전송한다. HTTP Request를 전송받는 Servlet Container는 HttpServletRequest,..
-
[SpringBoot - Step 2] 클래스로더 & Web appliationJava/SpringBoot 2.0 2019. 1. 12. 23:12
Class Loader"한번 작성하면 플랫폼에 상관없이 쓸수있다(Write once run anywhere)" 이특징을 실행 할 수 있는 기술이 클래스로드(Class Loader)이다.자바 코드를 작성한 후 컴파일하면 해당 코드는 JVM(Java Virtual Machine)에서 실행 가능한 상태가 된다. 이때 JVM이 클래스를 실행하기 위해서 클래스를 로딩하는 과정이 필요한데 클로스로더가 그역할을 수행한다. (JVM은 이전 Step에서 정리 했으니 참고할것 [링크]) Class Loader의 특징구조가 계층적 구조를 갖으며 상위 클래스로더에서 하위 클래스로더를 갖는 방식이다.클래스 로딩을 위임할 수 있다.클래스로더는 클래스를 로딩할 때 가능한 범위를 갖는다. 자식클래스로더는 부모 클래스로더로부터 위임받..
-
[SpringBoot - Step 1] Java, JVM 구동원리Java/SpringBoot 2.0 2019. 1. 12. 22:30
개인블로그를.. 잠시 접어두고 티스토리 서비스를 익히고자 블로그를 시작한지 벌써 6개월이 지났는데 이핑계 저핑계를 만들며 많이 써보지 못했다. ㅠㅠ이번에 스프링부트 스터디를 하게 되었고 이내용들을 쭉쭉 정리할 생각이다. 내가 얼마나 기억하고 있을지..끝까지 잘 마무리할 수 있을지 .....걱정이다 ㅋ 자바의 구동원리1. 컴파일러를 통해 JAVA 코드 검증과 JVM이 이해할 수 있는 바이트코드(.CLASS)로 만듬2. .CLASS를 찾아 JVM으로 가져옴3. 바이트코드 검증4. 인터프린트(재해석)5. 바이트코드를 바이너리코드로 변경(바이너리 코드는 JVM의 클래스 영역에 저장)6. 런타임 과정에서는 클래스들의 static 변수를 자동 초기화7. static 블록 수행8. 인스턴스 블록 수행9. 생성자 호출..
-
Executable jar File readJava/Executable jar File read 2018. 8. 22. 10:38
Spring에서 classpath에 있는 resource를 처리하기 위해 Resource라는 인터페이스 구현체인 ClassPathResource을 제공한다.tomcat배포가 되면 File객체로 처리 할 수 있으나 excutable jar일경우에는 예외 상황이 발생한다.단, classPathResource.getURL(), exists()는 classLoader가 처리하기때문에 문제가 없다. 하지만 getFile()은 .. 안된다.(war, IDE로 run할때는 제외)executable jar는 jar파일 하나에 컴파일된 class file,resource와 nested jar들로 구성되어 있습니다.여기서 resource의 URL은 jar://로 시작하는 주소를 가지게 됩니다.해당 프로토콜로 classlo..