[주저리]
MSA - 하나의 프로젝트에서 여러개의 독립적인 서비스를 제공하는 방식
ex) CMS(war)에서 소켓통신 1:1채팅(jar)
ERP(war, Oracle)에서 배송에대한 택배기사 배송현황(jar, Mysql), 고객이 송장번호를 입력(jar, Mysql)
1. 여러개의 데이터베이스를 선택적으로 사용가능함
2. 독립적인 서비스를 구축할 수 있음 (API)
3. .jar => src/main/webapp/.jsp 이거 못씀 작동 안함
jar안에 대시보드가 포함되게 됨 => 포트를 오픈 => 자체구조로 돌아가는 프로세서가 있음 //말그대로 WAS가 없어도 됨 자바vm형태로작동함
면접의 핵심 : 달달달 외운게 아니라 쉽게 설명해서 꼬리 안잡히기
[properties vs yml]
properties 라이브러리 경로 = 속성값
라인별로 직관적인 문법사용
yml 라이브러리 경로 : 속성값
계층구조이며, 들여쓰기 형태 띄어쓰기 주의해야함
[.jar]
.jsp MVC 형태 => 권장사항이아님 (공식사이트피셜)
- spring-boot (v.2.0 ~ 3.0) => src/main/webapp => .jsp 화면
- spring-boot (v.3.1 ~) => src/main/webapp => .jar 패킹 => .jsp 출력안됨
jsp쓰려면 버전 낮추던가 다른 방식을 찾기
[의존성 찔끔 추가]
[메이븐리포지토리]
JSP, JSTL
https://mvnrepository.com/artifact/jakarta.servlet.jsp.jstl/jakarta.servlet.jsp.jstl-api/3.0.2

JSP, JSTL
https://mvnrepository.com/artifact/org.glassfish.web/jakarta.servlet.jsp.jstl/3.0.1
jsp-server core
https://mvnrepository.com/artifact/org.apache.tomcat.embed/tomcat-embed-jasper/11.0.7
JSON
https://mvnrepository.com/artifact/org.json/json/20240303
[빌드]
프로젝트 우클릭 > Run as... >


파랗게된거 클릭하면 빌드됨

또는 그레이들 태스크 윈도우를 열어서 빌드하기
프로젝트 경로의 빌드 > libs 경로에 jar 파일 생김
/Users/nayeong/Documents/projects/msa_api/site.msa/build/libs

플레인은 필요없음 => 플레인 안붙은거 사용하기
대시보드 꼭 끄기 포트충돌남
[jar에서 jsp강제실행]
[가짜버전]
#이렇게 도메인을 각각 잡을수있음 => 독립적으로 돌아갈수있음
#domain : api.abc.co.kr
spring:
application:
name: site.msa
devtools:
restart:
enabled: true
mvc:
view:
prefix: /WEB-INF/jsp/
suffix: .jsp
servlet:
multipart:
enabled: true
max-file-size: 100MB
max-request-size: 1000MB
server:
port: 8080
servlet:
encoding:
charset: utf-8
force-response: true
enabled: true
jsp:
init-paremeters:
development: true

이렇게 폴더를 구성해서 jsp 넣기
//webapp의 WEB-INF에서는 절대 jsp안돌아감
이렇게 해서 빌드해서 실행해보기
아... 또 구라임 실행안됨
[가짜버전2]
#이렇게 도메인을 각각 잡을수있음 => 독립적으로 돌아갈수있음
#domain : api.abc.co.kr
spring:
application:
name: site.msa
devtools:
restart:
enabled: true
mvc:
view:
prefix: /
suffix: .jsp
servlet:
multipart:
enabled: true
max-file-size: 100MB
max-request-size: 1000MB
server:
port: 8080
servlet:
encoding:
charset: utf-8
force-response: true
enabled: true
jsp:
init-paremeters:
development: true

빌드
어 또 안돼~
⭐️ 환경설정을 바꿨을때 적용시켜야함 바로패킹하면 안됨 한번이라도 돌아가고 패킹되어야함
대시보드로 돌리고 빌드하기
어 근데 안돼
[가짜버전3]
리소스파일에 jsp가 보이
jar로 만들때 실제로 jar안에 jsp가 있는지 작동이 잘되는지 확인
[가짜버전4]
속임수 필요
jar 방화벽작동해서 안됨
war로 속여야함

그레이들 리프레시
프로젝트 facet 5.0

bootWar가 생김
잠깐만스땁
더 세팅 필요
application.java 수정
package site.msa;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
@SpringBootApplication
public class Application extends SpringBootServletInitializer{
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(this.getClass());
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
서버 재시작하고 잘되면 끄고 빌드

이거로 빌드하기~!


war가 jar처럼 돌아감
아!@ 근데 안됨~!
[진짜]
빌드 그레이들 아이디 워
yml
#이렇게 도메인을 각각 잡을수있음 => 독립적으로 돌아갈수있음
#domain : api.abc.co.kr
spring:
application:
name: site.msa
devtools:
restart:
enabled: true
mvc:
view:
prefix: /
suffix: .jsp
servlet:
multipart:
enabled: true
max-file-size: 100MB
max-request-size: 1000MB
server:
port: 8080
servlet:
encoding:
charset: utf-8
force-response: true
enabled: true
jsp:
init-paremeters:
development: true
워로 빌드하고 jsp 경로는 webapp


[.jsp 사용방법 총정리]
권장하지 않는 방법이지만 굳이 하고싶다면
1. /src/main/resource를 이용하여 META-INF ㅁㄴㅇㄹ
2. ㅁㄴㅇㄹ
3. 문제는 .jsp가 .jar 패킹을 하게 되면 공식적으로는 출력(보안) not found 실행
4. build.gradle => id='war' => /src/main/resource 라는 디렉토리 파일로 이동시켜 .jar 패킹을 하였을 경우 ㅁㄴㅇㄹ
5. application.java 수정 (추상클래스 로드)
6. Gradle Task에 bootWar가 생김 => 빌드하기
7. java -jar site.msa-0.0.1-SNAPSHOT.war //war파일인데 jar처럼 돌아감
레스트 컨트롤러만 있다면 bootJar로 하고
컨트롤러 있으면 war?