카테고리 없음

#80. Maven설치 및 설정변경, Spring 환경설정

열하나요 2023. 10. 31. 09:57

Spring Framework = Spring Legacy

호환성을 위해 Spring v4는 못씀

정부 spring

https://www.egovframe.go.kr/eng/main.do

 

 

Maven설치 : 빌드도구

 

https://maven.apache.org/

 

Maven – Welcome to Apache Maven

Welcome to Apache Maven Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting and documentation from a central piece of information. If you

maven.apache.org

 

 

 

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파일로 설정을 해서 등록해야 함!