스프링&스프링부트
-
[intelliJ / springboot] 'Java/JavaVirtualMachines/openjdk-23.0.1/Contents/Home/bin/java' finished with non-zero exit value 1스프링&스프링부트 2024. 12. 25. 12:46
스프링부트 스타터를 이용해 프로젝트를 오픈하는 과정에서 에러가 발생했습니다메세지를 읽어보면 JVM에 jdk 무언가가 잘못되었다는 것을 확인할 수 있습니다 맥북을 기준 [ IntelliJ IDEA > settiongs ] 에 들어갑니다 [Build, Excution, Deployment > Build Tools > Gradle] 이동합니다 Build and run using / Run tests using 부분을 Gradle > IntelliJ IDEA로 변경하고Gradle JVM 또한 현재 프로젝트 버전과 동일한 버전으로 변경합니다 apply 후 main을 다시 실행해 보면 작동하며 톰캣도 정상 작동하는 것을 확인할 수 있습니다
-
[스프링MVC - 1편] 자바 백엔드 웹 기술 역사스프링&스프링부트 2024. 12. 22. 18:07
자바 웹 기술 역사과거 기술서블릿 - 1997HTML 생성이 어려움JSP - 199HTML 생성은 편리하지만, 비즈니스 로직까지 너무 많은 역할 담당서블릿 + JSP 조합, MVC 패턴 사용모델, 뷰, 컨트롤러로 역할을 나누어 사용MVC 프레임워크 - 2000년대 초 ~ 2010년대 초MVC 패턴 자동화, 복잡한 웹 기술을 편리하게 사용할 수 있는 다양한 기능 지원스트럿츠, 웹워크, 스프링 MVC(과거버전) 현재 기술애노테이션 기반의 스프링 MVC 등장@Controller스프링 부트의 등장스프링 부트는 서버를 내장과거에는 서버에 WAS를 직접 설치하고 소스는 War 파일을 만들어서 설치한 WAS에 배포스프링 부트는 빌드 결과(Jar)에 WAS 서버 포함 > 빌드 배포 단순화 최신 기술 - 스프링 웹 ..
-
[스프링MVC - 1편] HTML, HTTP API, CSR, SSR스프링&스프링부트 2024. 12. 22. 17:51
정적 리소스고정된 HTML 파일, CSS, JS, 이미지, 영상 등 제공주로 웹 브라우저 HTML 페이지동적으로 필요한 HTML 파일을 생성해서 전달웹 브라우저 : HTML 해설 HTTP APIHTML이 아니라 데이터를 전달주로 JSON 형식 사용다양한 시스템에서 호출데이터만 주고받음, UI 화면에서 필요하면 클라이언트가 별도 처리앱, 웹 클라이언트, 서버 to 서버 HTTP API - 다양한 시스템 연동주로 JSON 형태로 데이터 통신UI 클라이언트 접점앱 클라이언트(아이폰, 안드로이드, pc 앱 등)웹 브라우저에서 자바스크립트를 통한 HTTP API 호출React, Vue.js 같은 웹 클라이언트서버 to 서버주문 서버 > 결제 서버기업 간 데이터 통신 서버사이드 랜더링 SSRHTML 최종..
-
[스프링MVC - 1편] 동시 요청 - 멀티 쓰레드스프링&스프링부트 2024. 12. 22. 17:27
클라이언트에서 요청을 하게 되면 TCP/IP 커넥션 연결이 되고 servlet을 호출연결에서 servlet을 호출하는 건 누구? 쓰레드애플리케이션 코드를 하나하나 순차적으로 실행하는 것은 쓰레드자바 메인 메서드를 처음 실행하면 main이라는 이름의 쓰레드 실행쓰레드가 없다면 자바 애플리케이션 실행이 불가능쓰레드는 한 번에 하나의 코드 라인만 수행동시 처리가 필요하면 쓰레드를 추가로 생성 단일 요청 - 쓰레드 하나 사용 다중 요청 - 쓰레드 하나 사용 요청마다 쓰레드 생성장점 동시 요청을 처리할 수 있다리소스(CPU, 메모리)가 허용할 때까지 처리 가능하나의 쓰레드가 지연되어도 나머지 쓰레드는 정상 작동한다단점쓰레드 생성 비용은 매우 비싸다고객 요청이 올 때마다 쓰레드를 생성하면 응답 속도가 ..
-
[스프링MVC - 1편] 서블릿스프링&스프링부트 2024. 12. 22. 16:46
서버에서 처리해야 하는 업무서블릿을 지원하는 WAS 사용은 의미 있는 비즈니스 로직 제외한 부분을 해준다 서블릿 특징@WebServlet(name="helloServlet", urlPatterns="/hello")public class HelloServlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) { // 애플리케이션 로직 }}urlPatterns의 URL이 호출되면 서블릿 코드 실행HTTP 요청 정보를 편리하게 사용할 수 있는 HttpServletRequestHTTP 응답 정볼르 편리하게 제공할 수 있는 Htt..
-
[스프링MVC - 1편] 웹서버 & 웹 애플리케이션 서버스프링&스프링부트 2024. 12. 22. 16:25
웹 서버 (Web Server)HTTP 기반으로 동작정적 리소스 제공, 기타 부가기능정적(파일) HTML, CSS, JS, 이미지, 영상EX) NGINX, APACHE 웹 애플리케이션 서버 (Web Application Server)HTTP 기반으로 동작웹 서버 기능 포함 + 정적 리소스 제공 가능프로그램 코드 실행해서 애플리케이션 로직 수행동적 HTML, HTTP API(JSON)서블릿, JSP, 스프링 MVCEX) 톰캣, Jetty, Undertow 웹 서버 VS 웹 애플리케이션 서버(WAS)웹 서버는 정적 리소스, WAS는 애플리케이션 로직두 개의 용어는 모호함웹 서버도 프로그램 실행하는 기능을 포함하기도 함웹 애플리케이션 서버도 웹 서버의 기능을 제공함자바는 서블릿 컨테이너 기능을 제공하면..
-
[spring] DTO 와 VO 무슨 차이가 있을까스프링&스프링부트 2024. 8. 14. 15:58
현재 진행하는 프로젝트의 소스를 보는데 문득 VO에 로직이 이렇게 많이 들어있다고? 라는 생각이 들었다.저번에 했던 프로젝트에서는 VO가 아닌 DTO로 데이터를 전달했었고 그때는 로직이 전혀 없었기 때문에 문득 궁금해졌다.그동안은 DTO와 VO는 이름만 다르고 똑같이 데이터 전달하는거겠니 했는데 찾아보니 아니었다. DTO ( Data Transfer Object )- 순수하게 데이터를 담아 계층 간으로 전달하는 객체- 로직을 갖고 있지 않은 순순한 데이터 객체이며 메서드는 getter/setter만 갖는다. VO ( Value Object )- 값 그 자체를 나타내는 객체- Read-Only 속성으로 getter만 가능하다.- DTO와 다르게 로직을 포함할 수 있으며 VO의 경우 특정 값 자체를 표현..
-
[springboot] 의존성주입(DI)와 순환참조 문제 해결스프링&스프링부트 2024. 8. 14. 15:36
자바 - 생성자 인강을 보고 정리한 후 스프링 프레임워크 기반 실무의 코드를 보니, 더 많은 것들이 보였다.각 서비스마다 생성자 주입이 되어 있었는데 인강에서 보는 자바의 기본적인 생성자 주입 방법과는 차이가 있었다. 의존성 주입 (Dependency Injection, DI)DI란 외부에서 두 객체 간의 관계를 결정해 주는 디자인 패턴으로, 인터페이스를 사이에 둬서 클래스 레벨에서는 의존관계가 고정되지 않도록 하고 런타임 시에 관계를 동적으로 주입하여 유연성을 확보하고 결합도를 낮출 수 있게 해 준다.- 의존성이란 한 객체가 다른 객체를 사용할 때 의존성이 있다고 한다.- 의존성 주입이란 두 객체 간의 관계를 맺어주는 것이다. 의존성 주입 방법1) 생성자 주입2) 필드 주입3) 수정자 주입( Spr..