ㅁ 패키지 익스플로러 우클릭 - new - Spring Legacy Project
- DB 연동해서 웹개발하진 않고 스프링 특징(IOC, DI)을 살펴본다.
- 템플릿으로는 Spring MVC Project를 선택해서 만든다.
그럼 ~어느정도 세팅된 채로 만들어진다.
- 기본으로 깔고 갈 베이스 패키지를 만든다.
3번째 레벨정도는 만든다.
첫번재 두번째 레벨은 도메인의 역순, 세번째 레벨은 어쩌구
- 이제부터는 베이스 패키지가 굉장히 중요하다.
- 세번재 레벨값을 잘 기억하고 있어야 한다. contextPath가 세번재 레벨로 잡힌다.
ㅁ
- 폴더의 아이콘에 패키지가 포함되어 있으면 소스파일이 보관되는 소스폴더다.
- s는 스프링과 관련된 문서가 포함되어 있어서 붙어있다.
(1) src/main/java
- java 파일을 보관하는 폴더.
(2) src/main/resources
- 이것도 소스폴더. 스프링 프로젝트에서는 내가 만들 필요 없이 만들어준다.
- 환경설정 관련한 xml파일이나 sql문들 작성하는 mapper파일을 보관하는 폴더다.
(3) src/test/java
- 실제 구동되는 폴더가 아니라 테스트용 폴더다. 나중에 junit 테스트할 때 쓴다.
(4) src/test/resources
- 실제 구동되는 폴더가 아니라 테스트용 폴더다. 나중에 junit 테스트할 때 쓴다.
(5) src/main/webapp/resources
- 위의 resources와는 다르다. 정적 자원(이미지파일, js파일, css파일)을 보관하는 폴더다.
- assets라는 이름의 폴더를 썼었는데 스프링 프로젝트에서는 resources라는 이름의 폴더로 만들어진다.
(6) src/main/webapp/WEB-INF/views
- 화면을 담당하는 jsp 파일을 보관하는 폴더.
(7) src/main/webapp/WEB-INF/spring
- 스프링 환경설정 관련한 xml 파일이 보관되는 폴더.
(8) test
- 얘도 테스트용이라 당장 쓰이진 않는다.
(9) target
- 우리가 작업한게 컴파일되서 타겟에 저장된다.
- 개발이 다 끝나고 실제 서버에 배포하는 과정을 할텐데, 배포된 파일이 저장되는 폴더가 target 폴더다.
- 지금 당장은 쓰이지 않는다.
(10) pom.xml
- xml 파일인데 아이콘은 m이다.
- m은 Maven을 뜻한다.
- sts로 스프링 프로젝트를 만들면 내부적으로 메이븐을 가져다 쓴다.
- STS에서 스프링 프로젝트를 만들면 내부적으로 Maven을 가져다 쓴다.
스프링은 따지고 보면 Maven 프로젝트 중의 하나다.
- Spring 자체는 Maven 프로젝트가 아니며 독립적인 프레임워크다.
다만 Spring 프로젝트를 생성할 때 Maven 또는 Gradle과 같은 빌드 도구를 사용하여 의존성 관리와 빌드를 편리하게 한다.
ㅁ 자동 생성된 home.jsp와 HomeContollrer.java 삭제
- 샘플용으로 만들어 놓은 home.jsp다. 지운다.
- HomeController.java도 지운다.
- 이 둘을 지우면 프로젝트에 빨간 X표는 사라진다.
ㅁ 자바 버전 변경
- 현재 패키지 익스플로러의 JRE System Library를 보면 자바가 1.6버전이다.
- 스프링 이전에는 버전을 바꿀 때 project facets가서 했는데 이젠 그럴 필요 없다.
이제 버전관리 등은 pom.xml 파일에서 진행한다.
- pom.xml은 Maven 관련 파일이다.
※ Maven
- Java 프로젝트의 전반적인 버전 관리와 라이브러리 관리를 자동화하는 빌드 관리 도구다.
- project object model XML 문서(pom.xml)를 통해 해당 프로젝트의 버전 정보 및 라이브러리 정보들을 통합하여 관리하는 프레임워크이다.
- 네트워크를 통해 필요한 라이브러리와 플러그인을 자동으로 다운로드하여 개발 환경 설정과 빌드 작업을 간소화한다.
- sts에서 스프링 프로젝트를 생성할 때 기본적으로 Maven을 사용하도록 설정되어 있다.
- 빌드 관리 도구로 Maven말고 Gradle도 있다.
- Maven과 Gradle은 모두 빌드 도구로, Java 프로젝트에서 의존성 관리, 빌드(컴파일, 테스트, 패키징 등), 그리고 프로젝트 관리를 자동화하는 역할을 한다.
- 의존성 관리는 소프트웨어 프로젝트에서 필요한 외부 라이브러리나 모듈을 자동으로 다운로드하고 프로젝트에 포함시키는 과정을 말한다.
- 이제부터는 직접 jar 파일을 추가할 필요가 없다. pom.xml 문서에 사용할 라이브러리를 작성만 하면 된다.
Maven이 필요한 라이브러리를 자동으로 다운로드하고 프로젝트에 연동해 준다.
이게 라이브러리 종속성이란 특징이다.
- 일반적인 프로젝트는 개발자가 필요한 라이브러리를 직접 찾아서 추가해야 하지만, Maven을 사용하면
pom.xml 문서에 사용하고자 하는 라이브러리를 등록하면 자동으로 프로젝트에 추가되게 하여 라이브러리 관리의 편리성을 제공해준다.
ㅁ pom.xml
- project 태그로 전체가 감싸져 있다.
- 그 안에 model
(1) 프로젝트 정보
(2) properties
- 해당 xml 파일 내에서 사용하고자 하는 버전들을 변수에 담아두는 태그
- properties에 쓰여진 값은 ${ } 블록으로 다른데서 참조할 수가 있다.
(3) dependencies
- 여러개의 depencency 태그들이 올 수 있다.
- 사용하고자 하는 라이브러리(jar)를 나타낸다.
이 프로젝트에서 사용하고자 하는 라이브러리들을 dependency 태그로 나타낸다.
- maven에 의해서 저장소로부터 자동으로 다운로드가 진행된다.
- 기본적으로 필요한 라이브러리가 꽤 많다.
- 스프링과 관련된 라이브러리 2개, Logging 관련한 라이브러리 4개 등등이 있다.
얘네가 기본적으로 스프링 프로젝트를 가동시킬 때 기본적으로 필요해서 이미 기재되어 있다.
- dependency 태그를 추가하면 된다.
- dependency 구문에 의해 maven이 라이브러리들을 다운로드 했을 것이다.
- window - preferences - maven - user settings - Local Repository의 폴더 안에 라이브러리들이 다운로드 되어 있다.
- Users는 "사용자" 폴더다.
- pom.xml에 dependency로 작성한 라이브러리들이 다운되어 있다.
- jar 파일이 있다.
- 스프링 관련된 것들은 3.1.1 버전으로 다운받아져 있다.
- 여기서도 볼 수 있다.
- 패키지 익스플로러에 Maven Dependecies에서도 볼 수 있다.
확장해보면 현재 다운로드가 진행된 jar파일 목록들을 한번에 볼 수 있다. 어디에 위치되어 있는지도 볼 수 있다.
- 스프링 관련된 것들은 3.1.1 버전으로 다운받아져 있다.
- pom.xml에 어쩌구
- 근데 3.1.1 버전은 너무 옛날 버전이다.
현재 전자 정부에서 쓰는 5.3.27 버전으로 바꾼다.
- mvnrepository.com에 들어간다. 라이브러리를 제공하는 maven 사이트다.
- 다수가 한번에 접속하면 ip 차단되기도 한다. 그럼 ip 우회해서 들어가야 한다.
지금은 괜찮아도 나중에 차단되기도 한다.
- 여기서 라이브러리들을 검색할 수 있다.
- spring 검색하면 스프링 관련한 라이브러리가 보여진다.
- 전자정부가 5.3.27버전이다. 6버전은 스프링 부트할때 써보기로 하고, 지금은 5.3.27버전으로 한다.
- pom.xml에서 <properties> 태그의 <org.springframework-version>을 5.3.27로 바꾸고 저장하면 progress 탭에서 다운이 진행된다.
<properties>
<java-version>1.6</java-version>
<org.springframework-version>3.1.1.RELEASE</org.springframework-version>
<org.aspectj-version>1.6.10</org.aspectj-version>
<org.slf4j-version>1.6.6</org.slf4j-version>
</properties>
<properties>
<java-version>1.6</java-version>
<org.springframework-version>5.3.27</org.springframework-version>
<org.aspectj-version>1.6.10</org.aspectj-version>
<org.slf4j-version>1.6.6</org.slf4j-version>
</properties>
- maven을 쓰면 일일이 jar 파일을 다운받아서 lib 폴더에 넣을 필요 없이 자동으로 다운받아진다.
ㅁ
- aspectj를 검색해본다.
첫번째로 나오는 AspectJ weaver를 들어가본다.
- 엄청 옛날 버전이다. 스프링 버전이 나온 날짜와 같이 나온 버전이랑 맞춰주는 것이 제일 좋다.
2023년 4월쯤에 나왔으니까 2023년 8월 보다는 2022 12월 21일 버전을 쓴다. 스프링 버전이 나오는 것보다 좀 더 전걸로.
- 아니면 usages를 봐도 된다. 사용 빈도 수다. 1.9.19로 수정한다.
<properties>
<java-version>1.6</java-version>
<org.springframework-version>5.3.27</org.springframework-version>
<org.aspectj-version>1.6.10</org.aspectj-version>
<org.slf4j-version>1.6.6</org.slf4j-version>
</properties>
<properties>
<java-version>1.6</java-version>
<org.springframework-version>5.3.27</org.springframework-version>
<org.aspectj-version>1.9.19</org.aspectj-version>
<org.slf4j-version>1.6.6</org.slf4j-version>
</properties>
- 왼쪽의 maven 어쩌구에서도 버전이 바뀐걸 확인할 수 있다.
ㅁ slf4j
- 얘도 스프링 버전이 나왔을 대와 비슷한 때로 맞춘다.
- 2.0.7로 한다.
<properties>
<java-version>1.6</java-version>
<org.springframework-version>5.3.27</org.springframework-version>
<org.aspectj-version>1.9.19</org.aspectj-version>
<org.slf4j-version>1.6.6</org.slf4j-version>
</properties>
<properties>
<java-version>1.6</java-version>
<org.springframework-version>5.3.27</org.springframework-version>
<org.aspectj-version>1.9.19</org.aspectj-version>
<org.slf4j-version>2.0.7</org.slf4j-version>
</properties>
ㅁ 자바 버전
- 1.6으로 되어있는데 11로 바꾼다.
<properties>
<java-version>1.6</java-version>
<org.springframework-version>5.3.27</org.springframework-version>
<org.aspectj-version>1.9.19</org.aspectj-version>
<org.slf4j-version>2.0.7</org.slf4j-version>
</properties>
<properties>
<java-version>11</java-version>
<org.springframework-version>5.3.27</org.springframework-version>
<org.aspectj-version>1.9.19</org.aspectj-version>
<org.slf4j-version>2.0.7</org.slf4j-version>
</properties>
- JRE SYSTEM LIBRARY는 여전히 1.6이다.
- 이러고 maven 업데이트를 하면 java 버전이 바뀔 것이다.
ㅁ dependencies - Servlet 주석 부분
- 서블릿 관련한 라이브러리들이다.
- maven 라이브러리 사이트에서 artifactId에 있는 걸 검색하는게 제일 정확하다.
- 2018년에 나온게 가장 최근이다. 4.0.1로 바꾼다.
- 근데 빨간줄이 뜬다.
- 버전만 바꿀 것이 아니고 artifactId도 같이 바꿔야 한다.
- 구문을 통째로 복사해간다. artifactId도 변경을 해줘야 한다.
- 제일 위에있는걸 클릭
- jstl은 그대로 둔다.
ㅁ TEST
- junit 검색
- 2번째로 검색되는 junit이 4버전대.
ㅁ 자바 버전 변경
- 11버전으로 참조하게 했는데도 1.6 버전으로 보인다.
- maven을 강제로 업데이트하기.
- 프로젝트 우클릭 - maven - update project를 누르면 어떤 창이 뜨는데 ok누르면 자바가 11버전이 된다.
- 이제 자바 버전을 project facets에서 변경할 필요가 없다.
- maven - update project를 했더니 JRE System Library [javaSE-1.6]이 1.6에서 11로 바뀌었다.
ㅁ Maven (pom.xml)
- 프로젝트 관리 도구
- 프로젝트의 전반적인 버전 및 라이브러리, 플러그인들을 통합해서 관리하는 도구
- 라이브러리 종속성의 특징으로 dependency 태그로 사용할 라이브러리 작성시
메이븐 저장소로부터 자동으로 라이브러리가 다운되며 추가된다.
(패키지 익스플로러의 Maven Dependencies에서 확인 가능)
- mvnrepository.com 사이트에서 라이브러리 검색 가능
(dependency 구문 자체를 제공한다)
- 유의사항 1) pom.xml을 자주 수정하고 저장하면 매번 다운로드가 진행되어 오류가 자주 발생한다.
그래서 한꺼번에 작성하고 저장하는 것이 좋다.
- 유의사항 2) 다운로드 중에는 최대한 건드리지 않는 것이 좋다.
다운로드 중에 수정하고 저장하면 또 다운로드가 진행되는데 충돌나서 뻗어버릴 수 있다.
progress 탭을 확인해야 한다.
- 유의사항 3) 반영이 안되는 듯 보여지면 "프로젝트 우클릭" - "maven" - "update project"를 실행한다.
'Spring' 카테고리의 다른 글
[Spring] MVC (1) (0) | 2024.10.16 |
---|---|
[Spring] DI(의존성 주입) (2) | 2024.10.15 |
[Spring] IOC(제어의 역전) (0) | 2024.10.14 |
[Spring] 스프링 기초 (0) | 2024.10.14 |
[Spring] 스프링 세팅 (1) | 2024.10.14 |