|
스프링 프레임워크는 자바 기반의 엔터프라이즈 애플리케이션 개발을 위한 강력한 도구로써, 다양한 기능과 라이브러리를 제공하여 개발자가 보다 쉽게 엔터프라이즈 레벨의 프로젝트를 개발할 수 있다.
스프링부트는 스프링 기반 애플리케이션을 더 빠르고 쉽게 개발할 수 있도록 도와주는 도구이다. 개발 프로젝트의 기본적인 설정을 자동으로 해주며, 내장 서버를 통해 별도의 서버 설정 없이 애플리케이션을 실행할 수 있게 해준다. 이 기능들은 개발자가 애플리케이션을 더 빠르게 개발하고 배포할 수 있게 해주기 때문이다.
다시 말해 스프링부트는 스프링의 설정을 자동화하고, 개발자가 비즈니스 로직에 더 집중할 수 있게 해주며, 애플리케이션의 빠른 프로토타이핑과 개발을 가능하게 한다.
스프링부트는 스프링 프레임워크 위에 구축되어 있으며, 스프링의 모든 기능을 사용할 수 있다. 왜냐하면 스프링 부트는 스프링 프레임워크를 보다 쉽게 사용할 수 있도록 확장한 것이기 때문이다.
스프링부트(SpringBoot)
Spring은 개발환경 설정에 있어 초기 설정해야 할 작업들이 많다. 이로 인해 Spring으로 개발을 하려면 진입 장벽이 있다. 이러한 초기 설정을 간편하게 해주기 위해 등장한 것이 SpringBoot인데 이는 Spring과 다르게 Tomcat과 같은 웹 서버를 내장하여 별도의 웹 서버를 설치하지 않아도 되고 Spring과 외부 라이브러리를 자동으로 구성한다. 즉, 개발자의 편의를 위해 개발된 도구다.
다시 말해 Spring Boot는 스프링 프레임웍을 사용하는 프로젝트를 아주 간편하게 setup 할 수 있는 스프링 프레임워크의 서브 프로젝트다. 스프링부트는 독립 실행이 가능하며, 프로덕션 수준에 이르는 스프링 기반의 애플리케이션을 만들 수 있도록 도와준다. 스프링부트는 스프핑 플랫폼과 외부 라이브러리에 대해 독립적인(opinionated, 주관이 있는) 견해를 내세움으로써, 최소한의 환경설정으로 시작할 수 있도록 지원한다. 대부분의 스프링 부트 애플리케이션은 스프링 구성을 거의 필요로하지 않는다.
여기서 우리가 주목할 단어는 바로 “opinionated” 이다. opinionated란 독단적인 또는 주관이 있는 이라는 뜻으로, 스프링부트가 스스로 사용할 도구를 선택하고 기본적인 구성을 해준다는 것이다. 따라서 개발자들은 바로 웹 애플리케이션 개발을 시작할 수 있다. 이러한 부분은 극단적인 유연함을 추구하는 기존의 스프링 프레임워크와 상당히 대비되는 관점이다. 왜냐하면 기존의 스프링은 기술적인 선택은 개발자들에게 맞기고, 대신 추상화를 통해 유연한 기술 변경을 가능하게 해주었기 때문이다. 하지만 이러한 기술 선택 및 버전 충돌 등에 의한 번거로움이 상당히 크다는 것을 스프링 부트 개발자들은 이미 파악하고 있었다. 그래서 스프링 부트는 다양한 기술들 중에서 가장 좋고 적합한 기술을 스스로 선택하고, 호환되는 라이브러리 버전들을 자체적으로 검증하고, 자동으로 필요한 빈들을 등록하는 자동 구성 기능까지 갖추게 된 것이다. 추가적으로 번거로운 배포 작업도 간소화시켜주는 등 개발자들의 생산성을 엄청나게 증가시켜주니, 이제 스프링 부트는 선택이 아닌 필수라 할 수 있다.
이클립스에서 스프링부트 실행 https://hellodoor.tistory.com/107
STS에서 스프링부트 프로젝트 생성하기
vs code 에서 SpringBoot 실행 : https://kim-oriental.tistory.com/21
SpringBoot 기본 구조 https://gist.github.com/ihoneymon/a343e2f4a0299988206e
👁🗨디렉토리 구조에 기본 이해👁🗨
- src/main/resources : 자바 파일을 제외한 HTML, CSS, Javascript, 환경파일 등을 작성하는 공간이다.
- templates : src/main/resources 디렉터리의 하위 디렉터리인 templates 디렉터리에는 템플릿 파일을 저장한다. 템플릿 파일은 HTML 파일 형태로 자바 객체와 연동되는 파일이다. templates 디렉터리에는 SBB의 질문 목록, 질문 상세 등의 HTML 파일을 저장한다.
- static : 프로젝트의 css file, javascript file, image/sound file 등을 저장하는 공간이다.
- application.properties : 프로젝트의 환경을 설정한다. 프로젝트의 환경, 데이터베이스 등의 설정을 이 파일에 저장한다.
- src/test/java : 프로젝트에서 작성한 파일을 테스트하기 위한 테스트 코드를 작성하는 공간이다. JUnit과 스프링부트의 테스팅 도구를 사용하여 서버를 실행하지 않은 상태에서 src/main/java 디렉터리에 작성한 코드를 테스트할 수 있다.
- 주로 사용하는 프로젝트를 관리 툴
build.gradle : Gradle이 사용하는 환경 파일이다. 그레이들은 Groovy를 기반으로 한 빌드 도구로 Maven과 같은 이전 빌드 도구의 단점을 보완한 빌드 도구이다. build.gradle 파일에는 프로젝트를 위해 필요한 플러그인과 라이브러리 등을 기술한다.
Maven이란 자바 프로젝트를 관리하는 툴로, 미리 작성된 xml 파일을 이용하여 라이브러리를 자동으로 다운로드하거나 프로젝트를 빌드해준다. 즉, 자바 소스를 컴파일하고 패키지해서 deploy까지 자동화 해준다. 이 때 pom.xml은 Maven의 빌드 정보를 담고 있는 파일로, POM(Project Object Model)을 설정하는 부분으로 프로젝트 내 빌드 옵션을 설정할 수 있는 정보를 담고 있다.
------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- -------
https://start.spring.io 에서 zip 파일로 만들어 project import 하기 -------------
https://goddaehee.tistory.com/238
다운로드된 zip 파일의 압축을 풀고 ... https://data-make.tistory.com/655 <-- 얘를 참조
순서1)
https://start.spring.io 사이트에서 환경설정 정보를 압축파일로 Generate 한다.
주의 : SpringBoot 3.0 Release 이상 버전에서는 기존에 2.x 대에서 Java 8-17 을 그리고, Jakarta EE 7-8을 지원하였지만 이제는 최소 지원이 아래와 같아졌다.
- JDK 17 이상을 사용해야 한다.
- Jakarta EE 9 이상을 사용해야 한다.
순서2)
Spring Initializr에서 만들어진 zip 파일의 압축을 풀고 아래와 같이 IDE에 import 시킬 수 있다.
1) Maven project로 압축한 경우 :
압축이 풀린 폴더를 지정해 준다.
2) Gradle project로 압축한 경우 :
-----------------------------------------------------------------------------------------------------------------------------
Gradle 환경의 프로젝트를 빌드한 후 생성된 .jar로 배포하기(Window)
https://velog.io/@sians0209/Spring-.jar%EB%A1%9C-%EB%B0%B0%ED%8F%AC%ED%95%98%EA%B8%B0
1. 콘솔로 이동 : 명령 프롬프트(cmd)로 이동 >> cd c:\work\spring-sou\testproject 2. 빌드하기 >> gradlew build 3. 빌드가 되지 않을 때 빌드 폴더를 삭제하고 다시 빌드하는 명령어 >> gradlew clean >> gradlew clean build 4. jar 파일 생성 확인 >> cd build/libs >> dir jar check 5. 서버 배포 프로젝트명-0.0.1-SNAPSHOT.jar 파일만 복사해서 서버에 넣고, jar 파일을 실행시키면 실행가능 >> java -jar testproject-0.0.1-SNAPSHOT.jar |
Spring boot 서버를 Gradle의 jar로 직접 배포하기 : inteliJ, Eclipse, CLI 사용
https://greensky0026.tistory.com/261
참고 : 스프링부트 실행 시 배너를 보기 싫다면 ***
@SpringBootApplication
public class Sprweb1bootThApplication {
public static void main(String[] args) {
SpringApplication application = new SpringApplication(Sprweb1bootThApplication.class);
application.setBannerMode(Banner.Mode.OFF);
application.run(args);
}
}
@MVC 참고 사이트 모음
https://www.kurly.com/main
https://www.cgv.co.kr/
# 스프링 결제 시스템 연결 하기
스프링부트 + jsp로 배달사이트 만들기-40 결제api 사용해서 주문하기 https://sumin2.tistory.com/58
참고 : 이미 사용 중인 8080 포트 에러 [org.springframework.boot.web.server.PortInUseException: Port 8080 is already in use]
--- windows 인 경우 ---------------------------
cmd 창에서
> netstat -ano 명령어로 어떤 프로세스가 8080포트를 사용중인지 확인
-a : 모든 연결 및 수신 대기 포트를 표시
-n : 주소 및 포트 번호를 숫자 형식으로 표시
-o : 각 연결의 소유자 프로세스 ID를 표시
프로토콜 로컬 주소 외부 주소 상태 PID
TCP [::]:8080 [::]:0 LISTENING 7560
> netstat -ano | findstr 8080 특정 port 번호만 확인
taskkill 명령으로 PID를 지워주면 된다.
> taskkill /f /pid 7560
--- macOS 인 경우 ---------------------------
1. lsof 명령어로 해당 포트를 사용하는 프로세스를 조회
% lsof -n -i -P | grep 8080
lsof: 현재 실행중인 프로세스를 확인한다.
-n: 호스트네임을 제거한다.
-i: IPv[46] 파일들을 선택한다.
-P: 포트의 이름을 제거한다.
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 12345 user 128u IPv6 0x5210d6 0t0 TCP 127.0.0.1:8080 (LISTEN)
2. 해당 포트를 사용하는 프로세스를 종료한다.
% kill -9 12345
--- 리눅스 기반 환경이라면 -------------------------------------
lsof -i :"포트 번호"를 통해 프로세스 번호를 찾고 kill -9 "프로세스 번호"로 프로세스를 종료할 수 있다.
또는
$ lsof -i tcp:8080 프로세스 번호 검색
$ kill $(lsof -t -i:8080) 프로세스를 종료
첫댓글 mac 용
./gradlew build >>>>>cd build>>>>cd libs>>>>>java -jar 프로젝트명-0.0.1-SNAPSHOT.jar