회사의 경우 기존 개발자들의 땀방울로 이루어진 이미 잘 만들어진 설정파일들과 검증된 라이브러리들,
그리고 유틸리티 클래스들이 포함되어 있는 이클립스나 이클립스 비스무리한 IDE 툴을 받아서
(eGov도 이에 해당) 사용하면 버젼등에 크게 신경 안쓰고, 아주 편하게 개발을 진행할 수 있당.
문제는 바닥에서 프로젝트를 새로 시작하거나, 새롭게 Spirng을 공부하는 사람들의 경우
설정파일과 매일 티격태격하다가 본질은 오데가고, 재미없고 지쳐간다는 거시당.
안타깝게 스프링은 어렵다는 오해까지 뇌리에 기피 기피 새겨진 체로 외면하게 된당!
특히 버젼 호환성등의 문제에 대처하는 일은 가성비가 거의 제로에 가깝당.
세상은 그렇당, 불편함에 시끄러워지면 그것에 대응하는 해결책이 나오는 법!
스프링부트는 위에서 얘기한 스프링의 불편함을 완화시키기 위해서 당연히 나왔당.
자동설정(Auto Configure)은 개발자를 꿈꾸는 이들에게 개발자의 본질에 충실하게 한당.
한가지 자동설정의 단점이라면 내부적으로 어떤 라이브러리가 어떻게 연계되어 동작하는지에
대한 내용을 궁금하지 않게 만들어서 개발자의 깊이를 낮게 만들어서, 자동화에 대한 의존성이
점점 커지는 데 있당. 익숙해 지면 직접 설정부분을 자주 건들어 보는 것도 좋은 대안이당.
암튼 그렇당. 스프링부트를 마슬 보도록 하장. 먼저
스프링 스타터 사이트에 접속해 보장, 아래와 같은 화면이 보일 거시당.(핵심은 오른쪽 ADD당)
스프링 사용때 수도 없이 메이븐리포지토리를 방문 버젼 찾아서 복사/붙여넣기를 했다면 안해도 된당.
대략 필요한 거 고른 다음에 아래쪽 GENRATE 버튼을 누르면, 본인이 골라 재낀대로
설정된 필요한 게 담긴 Artifact명.zip 파일이 다운된당.
zip파일을 푸러서 이클리스에서 import 해서 사용해도 되지만, 그냥 본 걸로 충분하니 만족하장.
문제가 있당. java 버젼 선택 부분에, 11과 8이 없어졌당~~ ㅠㅠ
(요기서 왜용? 왜용? 항상 배경을 궁금해 하는 호사가들이 있당!
개인적, 정치적 소견을 배제하고, 나름 추측할 수 있는 배경 팩트만 이야기 하면
2019년 말 기존 스프링을 관리하던 Pivotal사를 VMWare사가 사게되고,
VMWare사가 그 뒤 Spring 6를 내 놓게 되는 뎅, JDK17이상을 기준으로 하게 된당.
왜냐면, JDK8에서 업그레이드를 꺼려하는 회사들을 대상으로 오라클은
성능과 보안을 개선, 필요없는(deprecated) 건 과감히 버리고, 필요한 건 확실히 업그레드 했다고,
자신있게 추천하는 걸롱 JDK17을 눈 아페 드리 미렀기 때문이당!, 대략 오켕?
한줄 결론을 위한 짧은 귀를 가졌다면, 그냥 JDK8에서 JDK17(전환점) 이상으로 바꾸란 말이당!
)
그렇다면 이왕 하는 기메 21버젼을 설치해서 해보도록 하장!
오라클 JDK는 은근 슬쩍 라이센스 문제가 기분나쁘겡 뒷골을 살살 건드린당.
이럴땐 프로덕션 모드까지 무료인 아마존 correto jdk가 해답이당.
링크를 클릭해서 21버젼을 다운받도록 하장!,
난 c: 드라이브에 jdk21이란 폴더에 풀고, 환경변수를 세팅해 주었당.
당신은 분명 환경변수가 무엇인지, 윈도우 기준 JAVA_HOME과 Path를 어케 세팅하는지
아는 사람일꺼당. 제어판에서 환경변수를 검색 cmd에서 아래처럼 나오도록 세팅하랑.
싫다면 할 수없당. 하지 않거나 할 줄 아는 사람에게 부탁하여 알고 가장!
사실 이클립스같은 IDE설정에서 프로젝트별로 설정을 바꾸어 써도 되지만 알아야 한당!
만약 기존 jdk버젼과 별도로 sts를 실행하고 싶다면 SpringToolSuite4 파일의
아래 해당 부분을 아래처럼 수정하장
==== 기존 ===
-vm
plugins/org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_17.0.9.v20231028-0858/jre/bin
-vmargs
==== 변경 ====
-vm
jdk21설치경로\bin\javaw.exe
-vmargs
스프링부트를 쓴다면 STS3 버젼보다는 STS4 버젼을 추천한당.(왜? 더 좋으니깡!)
요기서 https://spring.io/tools 다운로드 받으면 되는뎅(latest버젼이당. 잠깐 Stop!),
개발자답게 요기 에서 최신요걸 로 가서 압축버젼으로 받아서 잘 아는 곳에 저장하장!
사이즈가 꽤나 커졌당(600메가가 넘다닝!~~~)
현재(24년 1월2일)는 최신버젼이 4.21.0인데, 요것만 jdk21버젼을 지원한당!(그렇당)
압축풀고 폴더 안의 SpringToolSuite4.exe를 따블클릭하면 실행된다.
처음 실행하면 잊지말공, 메뉴 window->preference에 가서 encoding으로 검색해서
누네띠는대로 UTF-8로 바꾸어 준당.(안하면 나중에 피곤해 진당!)
특히 Content Types -> Text -> Java Properties File을 UTF-8로 설정하는 걸 빼먹지말장!
하는 김에 web browser로도 검색해서 크롬으로 바꾸장!
File -> New -> Spring Starter Project를 누르면, 스프링 스타터 사이트에서 본 것과
거의 같은 화면이 나온당. 거기서 하던대로 하면, 프로젝트가 맹글어 지는데, 아래 처럼
Dependency(여태 쓰던 걸롱)를 일단 딱 기본만 선택하도록 하장
최초 맹그는 프로젝트라면 쪼메 시간이 걸리니, 오른쪽 아래 진행 %를 확인하면서 기다리거나,
수다라도 쪼메 떠드는 거시 조바심을 없애는데 도움이 되지만, 컴터 사양에 따라 빠를 수도 있당.
spring-boot-devtools는 필수당. 없으면 jsp 파일만 수정해도 restart를 해야한당- 짜증 지대로당
spring-boot-starter-actuator 역시 필수당, 관리와 모니터링 기능을 제공한당 - 일단 넣어두장
http://localhost:8080/actuator 식으로 접근해 본당.
spring-Web은 Web Project 개발하려고 하닝, 당근으로 필요하당.
부트는 공식적으로 JSP를 지원하지 않아서, 귀찮지만 별도 귀찮지 않은 작업이 쪼메 필요하당.
(사실 restful로 개발할 거면 필요없을 수도 있지만, 그래도 맘 편하겡 괘니 준비하장)
참고로 boot에는 톰캣(tomcat)이 그냥 들어있당(embedded)
jsp사용 하기 위해서는 아래 라이브러리 pom.xml에 추가한당.
(boot는 기본적으로 thymeleaf 사용을 원함 그외에도 FreeMarker, Groovy-Template등... 다양)
spring boot3 라면 아래 껄 추강
<dependency>
<groupId>jakarta.servlet.jsp.jstl</groupId>
<artifactId>jakarta.servlet.jsp.jstl-api</artifactId>
</dependency>
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>jakarta.servlet.jsp.jstl</artifactId>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
spring boot2 이하라면 아래 껄 붙여넣깅
<!-- version 필요 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
src/main/resources에 보면 application.properties 이란 파일(설정통합)이 있는데, 여기에
아래 내용을 추가한당! (이전에 스프링을 보았다면-view resolver 느낌같은 느낌이 온당!)
참고로 src/main/resources 아래에 있는 static 폴더에 index.html을 맹글면 시작페이지가 된당!
# view resolver 접두어, 접미사 설정
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp
application.properties에 쓸 수 있는 key=value 값은 아래 url을 참조하장
https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html
마지막으로 위 설정에 맞게 src/main 아래 webapp/WEB-INF/views 폴더를 맹글어 준당.
그럼 고생했지만 이제 준비는 다 되었당!
com.e7e.bootstart 패키지 밑에 controller 패키지를 맹글공, 거기에
RestController.java 를 아래 코드처럼 맹글어 보장!
package com.e7e.bootstart.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/")
public class RestController {
@GetMapping("/")
public String home(Model model) {
model.addAttribute("insa", "Hello JSP");
return "home";
}
}
그리고 src/main/webapp/WEB-INF/views 폴더에 home.jsp를 아래 처럼 맹글장
앗 이런 new에 jsp가 없당, 심지어 html까지동 ㅠㅠ (프론트 프레임워크들의 선방?)
백엔드는 Restful API 서비스 구성에만 집중?
메뉴에서 Help -> Eclipse Marketplace 에서 jsp로 검색하면 아래 나오공 install 한단당!
(중간 중간에 선택,신뢰를 물어보는뎅, 잘 대답하장!~~)
설치가 끝나면, sts4가 restart 해야 한다고 까분당. 허락해 주장!
이제 views 폴더에서 마우스 오른쪽 버튼을 이용해 new -> other -> jsp가 가능하당.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>E7E 샘플</title>
</head>
<body>
<h1> ${insa} </h1>
</body>
</html>
자 이제 확인하장. boot를 실행하는 방법은 크게 2가지당.
첫째는 프로젝트 위에서 마우스 오른쪽 버튼을 눌렁, Run As, Spring Boot App을 선택하거나,
왼쪽 아래 Boot Dashboard가 보이는 뎅, 요기서 마우스 오른쪽버튼이나, 메뉴바를 이용한당.
까막눈이 아니라면 보자마자 느낌이 올것이당.
시작되고 나면 Open Web Browser(그림에서 보임)로 바로 브라우져로 열 수 있당,
실행 후 console에 에러가 없다면 브라우져에서 http://localhost:8080 을 확인하장!
위 화면이 보였다면 수고했당, 잘 했당 완벽하당! 글 읽는 능력(독해력)이 뛰어나당.!
보안 철칙:
백문이 불여일견! -> 문을 100개 설치 해봤자, 개 한마리 보다 못하당
반려견은 귀여울 뿐더러 보안에도 좋당!
다시 태어난다면 부잣집 반려견, 반려묘가 되고 싶다는 사람이 있을정도당!
임수정은 내가 사라오면서 본 사람 중에 가장 예뻤당.(매력은 또 다른거당!)
파도 파도 또 파도 끝없이 파도 끝없는 파도~~ 출렁!
사도 사도 또 사도 끝없이 사도 끝없는 탕진쨈~~ 홀랑!
봐도 봐도 또 봐도 끝없이 봐도 끝없는 Null Exception~~ 와랑!
https://www.youtube.com/watch?v=5EmCp6bNd-A
sts4 spring boot 세번쨍 (0) | 2023.07.10 |
---|---|
sts4 spring boot 두번쨍 (0) | 2023.07.04 |