Spring Framework = Spring Legacy
호환성을 위해 Spring v4는 못씀
정부 spring
https://www.egovframe.go.kr/eng/main.do
Maven설치 : 빌드도구
1) download
2) Maven 설정변경
경로에 한글있음 큰일남
C:\development\apache-maven-3.9.5\conf 폴더의 settings.xml파일 내용을 수정해줄것
localRepository
m2/repository => 얘가 C:사용자 ~~로 들어감
경로를 바꿔줄 것
<localRepository>/path/to/local/repo</localRepository>를 주석에서 빼서
새로만든 폴더 repository 경로를 적어줌
<localRepository>C:\development\apache-maven-3.9.5\repository</localRepository>
=> 메이븐을 이용해서 관리하는 모든 라이브러리는 development/apache-maven/repository에 들어감
sql developer에서 SPRING 계정을 만들어줌
CREATE USER SPRING IDENTIFIED BY SPRING;
GRANT CONNECT, RESOURCE TO SPRING;
이제부터는 eclipse대신 sts를 실행한다.
환경설정
Spring Explorer, Package Explorer, Navigator, progress, console, problem, Servers, Navigator
- progress바가 일하면 아무것도 하지말것 ㅎ
- Servers에 있는 것, Package Explorer에 있는 서버 지우기(체크박스 체크)
Perspective > shortcuts
General > Folder,
Java > Class, Interface, Package,
Spring > configuration, legacy
Spring Boot > all,
Web > JSP File
XML > XML File
Encoding 설정 (encoding, spelling, json)= > UTF-8
Server > Runtime > 원래있던거 지우고 Tomcat 추가
Java > code template > catch block body : 주석 지우기
Team > ignored Resources > add Patern > */target/* 작성 후 apply : 협업 시 ignore
Maven > User Settings > User Settings > Brower > C:\development\apache-maven-3.9.5\conf\settings.xml
: 하면 Local Repository 경로가 현재 경로로 바뀜
Project Facets > Java 를 1.8로 변경, Runtimes > Apache Tomcat 체크
Project만들기!!!
제어의 역전
객체의 생명주기(개발자의 경우 new로 생성자를 호출하여 객체를 생성한다.)가 바뀜
maven이라는 도구를 이용해 class파일을 관리해줌
New Legacy Project > Spring MVC Project > next
com.회사명.프로젝트명 => 프로젝트명이 contextPath가 됨!!
Project에 target은 절대 건드릴 일이 없음 (심지어 ignore해놈)
Spring관련 폴더는 src
실제 작업은 src의 main에서 작업한다. (test는 test용)
mybatis할 때에 resources에 config(환경설정), mapper파일 등을 넣어뒀음 => 동일하게 사용
webapp에 view와 관련된 파일들 jsp을 넣어뒀음 => 동일하게 사용
webapp > recources는 이미지나 css, js 등 파일을 넣어주는 곳(config넣는 파일과 헷갈리면 안됨)
WEB-INF에 lib는 없음 => 라이브러리는 Maven이 해줄거임, *직접 추가할 수도 있음
WEB-INF\spring\root-context.xml => 이게 config??
1) pom.xml
pom.xml은 Maven관리하는 파일임
=> java-version을 1.8로 바꾸고
=> springframework-version을 5.3.22로 바꿈
* 라이브러리 추가
일단 DB관련 5가지
mvn repository 가서 검색 후 버전누르면 dependency를 복사해오면 됨
1) ojdbc6 추가
=> 경로를 찾을 수 없음 => 사설저장소를 등록해줄 수 있음 => repository를 이용하여 등록
- <scope>는 지울것
=> package에 jar파일 자동 추가됨
2) spring JDBC 5.3.22버전 추가
유지보수를 위해 5.3.22로 적지 않고 ${org.springframework-version}를 적어준다 => 버전이 바뀌면 같이 바꿔줌
3) 순수 Mybatis 라이브러리 추가(3.5.13버전)
4) mybatis-spring 라이브러리 추가(1.3.2버전)
5) commons-dbcp 라이브러리 추가(1.4버전)
이렇게 추가해줄 수도 있고 WEB-INF > lib폴더를 만들어서 기존방식처럼 라이브러리를 추가해줄 수도 있다.
lib > taglib jar파일 4가지 추가
<!-- 추가적으로 필요한 라이브러리들을 세팅 -->
<!-- 1. DB관련(오라클, 마이바티스) 라이브러리들 -->
<!-- 1_1. ojdbc6 라이브러리 -->
<!-- mvnrepository.com 여기에 다 있음 -->
<dependency>
<groupId>oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.3</version>
</dependency>
<!-- 1_2. Spring에서 JDBC기능을 이용하기 위해 필요한 라이브러리 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<!-- 1_3. 순수 Mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.13</version>
</dependency>
<!-- 1_4. Spring에서 Mybatis를 이용하기 위한 라이브러리 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.2</version>
</dependency>
<!-- 1_5. ConnectionPool을 이용하기위한 라이브러리 -->
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
Servlet 부분 현재 버전과 호환이 잘 맞게 수정(있는데로 써도 되긴 함)
<!-- Servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.3</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
2) web.xml
배포서술자(DD)
원래는 웰컴파일 리스트만 담겨있었는데 Spring에서는 중요한 역할을 한다.
1. Member VO
기본생성자 없으면 로그인 못 만듦
setter없으면 기본생성자 못 만듦
2. DTD 직접추가
XML catalog에 경로추가하고
xml파일 만들 때 DTD선택, select XML Catalog entry로 선택하여 만듦
3. member-config.xml
/가 이제 target의 classes가 됨
Spring Bean : 스프링이 관리하는 객체
내가 등록한 class(객체)는 Spring Explorer에서 확인가능 => 애노테이션으로 등록
내가 만들지 않은 class파일 => xml로 등록
Spring container는 Servlet과 Spring Bean을 생성해주고 관리해주는 역할
- Spring Bean에는 Dispatcher Servlet(=> Servlet 중 *.me처럼 만들었던 서블릿 역할)과 같은게 들어있음
4. root-content.xml
<bean>에 작성 => Spring Explorer에 생성됨
즉, Spring이 관리하고 있다가 bean에 적으면 나한테 줌
ioc : 제어의 역전
5. index.jsp
web.xml에 웰컴파일 리스트가 없는데 어떻게 읽을까? => Server에 web.xml파일이 있음=> 웰컴파일 리스트가 있음
6. core tag Template
jsp파일 만들 때 JSP Templates a태그 누르면 만들 수 있음
7. DispatcherServlet (== 프론트 서블릿)
controller를 소환하면 가장 먼저 읽음
8. 애노테이션 방식으로 내가 만든 객체 bean등록하기
방법1. Class 선언 위에 @Component 작성 후 import => 너무 많으면 관리하기가 힘들어짐
방법2. Controller Class위에 @Controller 작성 후 import / Service는 @Service / dao는 @Repository
내가 직접 만든 클래스가 아닐 경우 컴파일이 끝난 .class파일로 배포되기 때문에
수정이 불가능하므로 코드상으로 애노테이션을 붙일 수 없음
이 경우에는 xml파일로 설정을 해서 등록해야 함!