1) 스프링 프로젝트 생성
Spring Legacy Project ⇒ project name 란에는 프로젝트 이름 입력 ⇒ 아래 Templates 는 Spring MVC Project 선택 후 Next
경로 설정 창이다. 회사에서는 관례상 도메인 명을 적는데 나는 1인 프로젝트기 때문에 아무렇게나 적으면 된다.
이게 contextRoot가 되기 때문에 또 이상한말 막 적으라는건 아니고 어느정도 신경써서 적긴 해야 한다. 또 정규 표현식이 적용되어 있어서 ##.###.### 이런식의 경로를 꼭 적어야한다. ( shr.project.herewith - 나는 이름 이니셜.프로젝트.프로젝트 명 으로 구현했다.)
결과화면
맨 처음 스프링 프로젝트 이름 설정했던 값이 들어가 있고 java 폴더 밑으로 내가 지정했던 경로가 들어가있다 shr.project.herewith
2) 화면 창 설정
화면은 사실 쓰면서 필요한대로 설정해서 사용하면 되는거라, 나의 기본 설정은 아래와 같다.
- Console ⇒ 결과 확인 창
- Problems ⇒ Console로 확인되지 않은 문제들 볼 수 있는 창
- Progress ⇒ 현재 서버 작동 현황을 볼 수 있는 창. ( 되도록이면 Progress 가 동작하는 동안에는 다른거 안건드리는게 좋다. )
- Servers ⇒ 현재 서버 정보 확인 및 등록, 서버를 실행 할 수 있는 창
- Navigator ⇒ 파일 생성 및 편집이 편리하도록 도와줌
- Pakage Exploer
- Spring Explorer
3) Shortcuts 설정
프로젝트창에 마우스 우클릭후 New로 새로운 파일 생성할때 먼저 보일 항목들을 선택하는 과정이다. 예를 들어 나는 JSP 파일로 화면 작업을 하기 때문에 JSP파일 생성 하는 일이 아주 많을 예정이다.
하지만 초기 화면에서 JSP가 없다.. Other에 들어가서 JSP를 찾아야 하는데 이런 번거로움을 만들 때마다 할게 아니라면 사전에 설정을 해주면 된다.
[ window ⇒ Perspective ⇒ Customize Perspective ⇒ shortcuts ] 경로로 들어가서 필요한 파일들을 체크해주면 된다.
나는 정말 필요로 하는 일부만 빼두고 나머지는 다 안보이게 숨겨놨다.
4) 인코딩 설정
- General - WorkSpace
- Css Files
- HTML Files
- JSP Files
- XML Files
- spelling
- Json Files
환경설정에 들어가서 위 키워드들을 차례대로 검색해서 인코딩을 모두 UTF-8로 변경해야 한글 깨짐이 발생하지 않는다.
5) 코드 설정
자동완성시 불필요한 주석 없애주는 과정으로 생략 가능하다
[ 환경설정 ⇒ code Templates ⇒ code ⇒ method body & Catch block body ]
method body 랑 catch block body 모두 더블 클릭 또는 Edit 버튼 눌러서 주석만 삭제해주면 된다.
6) 팀 설정 (Git 연결시)
깃 연결해서 사용 할 때, 올라가면 안되는 파일을 설정하는 창이다.
[ Team ⇒ Ignored Resources ⇒ Add patern ⇒ */target/* 입력해서 추가해주기 ]
7) 메이븐 및 서버 연결
7-1) 메이븐 다운로드
https://maven.apache.org/download.cgi
왜 Maven을 사용하는가?
lib 폴더에 넣던 각종 라이브러리 들을 통합하여 관리해주는 프로그램으로 내가 직접 라이브러리를 일일이 다운하고 설치하는 작업을 하지 않아도 xml을 이용해서 손 쉽게 관리가 가능하다. (스프링 프레임워크 사용시)
7-2) 파일은 개발환경설정에 필요한 관리 폴더로
( 현재는 dev 폴더를 생성해서 사용하고 있다. )
다운 받은 그대로 사용하게 되면 폴더 경로가 복잡하기 때문에, 추후 라이브러리들을 찾아보기 힘들게 된다.
그래서 우리가 만든 것들을 모아서 보기 쉽게 저장경로를 새로 생성 해주면 관리가 더 쉬워진다.
7-3) XML 수정
그 다음 아래 경로로 들어가서 xml 파일을 찾아 수정해줘야 한다. 저장 경로를 바꾸는 과정이다.
[ apache-maven-3.9.2 ⇒ conf ⇒ settings.xml ]
파일을 텍스트 편집기로 열고 settings 밑에 localRepository가 있는데 표시한 박스 밑에 <localRepository> 태그 생성 후 태그 안에는 maven repository 폴더 경로를 붙여 넣어 주면 된다. 나는 아래와 같다.
<localRepository>
/Users/hyelinsin/dev/apache-maven-3.9.2/repository
</localRepository>
폴더 경로를 모르겠다면 윈도우는 폴더 주소창 클릭해서 복붙 하면 되고 맥북의 경우 command + option + p 를 누르면 파인더 하단에 경로가 뜬다 우클릭해서 경로 복사하기 후 붙여 넣어주면 된다.
7-2) 메이븐 연결
[ 환경설정 ⇒ maven ⇒ User Settings ]
두번째에 브라우저 클릭 후
apache-maven-3.9.2 > conf > settings.xml 선택
하단에 저장소가 내가 아까 만들어 둔 repository 로 되어있으면 완성
7-3) 서버 연결
서버 올린적 없는데 이미 등록되어 있다면 (새프로젝트시) 가상의 서버인 경우다 → 삭제
버전 맞게 선택 후 Create a new local server 선택
next > 다음창에서 Browser로 설치된 톰캣의 폴더 선택하면 서버 업로드 완료.
8) 파일 수정 삭제
src → main → java → 설정한 경로 → homeController.java 삭제
webapp → WEB-INF → view → home.jsp 삭제
webapp → resources 폴더에 (images, css, js, uploadFiles) 필요한 폴더 생성
package 및 class 파일 생성
webapp → index.jsp 파일 생성
8-1) mybatis-config.xml
- main → resources → mybatis-config.xml 파일 생성
// 기본 구조
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<configuration>
<settings>
<setting name="jdbcTypeForNull" value="NULL" />
</settings>
<typeAliases>
<typeAlias type="com.kh.spring.member.model.vo.Member" alias="member" />
</typeAliases>
<mappers>
</mappers>
</configuration>
<setting name=”jdbcTypeForNull” value=”null” />
값이 없을 땐 Null이라고 자동으로 입력 해주는 역할을 한다.
typeAlias
매번 저 긴 풀네임을 적어 줄 수 없기 때문에 mapper에서 좀 더 간결하게 사용하기 위하여 별칭을 등록해주는 역할이다. 이 때 없는 파일을 미리 별칭 부여만 해두려고 하면 오류가 나니 반드시 존재하는 파일에 대한 별칭 등록을 해야한다.
mappers
mapper 파일 등록하는 역할을 한다. Mybatis에서 쓰던 environments, datasource는 root-context.xml에 기재한다 ( DB연결 정보는 서버 연결과 동시에 이루어져야 하는 작업이기 때문에 서버가 켜짐과 동시에 읽혀지는 root-context.xml파일에 기술 해야 한다)
8-2) root-context.xml
객체를 spring이 관리 할 수 있도록 bean 등록❗root-context.xml 서버 키면 가장 먼저 켜지는 파일다른 파일을 먼저 읽게 하고 싶으면 다른 파일을 등록해 두면 된다. 왜 가장 먼저 켜지냐면 어떤 파일을 먼저 읽을지 web.xml 의 <context-param> 안에 등록해두는데 여기에 적혀진게 root-context.xml이기 때문이다.
- ( WEB-INF → spring → root-context.xml )
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- Root Context: defines shared resources visible to all other web components -->
<!-- DB연결을 위한 도구 설정 -->
<bean class="org.apache.commons.dbcp.BasicDataSource" id="dataSource" destroy-method="close">
<!-- 어떤 DB에 접속할건지 정보 작성 -->
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="jdbc:oracle:thin@localhost:1521:xe" />
<property name="username" value="SPRING" />
<property name="password" value="spring" />
</bean>
<!-- mybatisSpring에서 제공하는 SQL 명령을 실행하기 위한 도구 -->
<bean class="org.mybatis.spring.SqlSessionFactoryBean" id="sqlSessionFactory">
<!-- mybatis-config.xml 설정파일의 위치를 등록하여 설정 값들을 가져와야 함 -->
<property name="configLocation" value="classpath:mybatis-config.xml" />
<!-- 어떤 DB에 연결할건지 도구 참조 설정 -->
<property name="dataSource" ref="dataSource" />
</bean>
</beans>
destroy-method=”close”
DB자원을 다 사용 하면(=파괴되면) close 메소드를 호출 하겠다.
dataSource와 sqlSessionFactory의 위치는 절대로 바뀌면 안된다. sqlSessionFactory에서 dataSource를 참조하고 있기 때문에 생성 위치가 중요 함. 반드시 sqlSessionFactory가 dataSource의 아래에 위치 해야 한다.
여기까지 설정을 완료했으면 빨간 밑줄 오류가 뜰 텐데 아직 빈 등록을 안해줬기에 찾을 수 없어서 그런거다. 이어서 설정 예정이라 오류는 가볍게 무시해도 된다.
9) pom.xml 수정
1) java-version 현재 사용하는 버전에 맞게 변경하면 된다.
2) org.springframework-version 또한 호환성에 맞게 변경한다.
6.0은 자바 17이상부터 정말최신이라 잘 안씀, 현재 사용 가능한거 5.3.x
5.3.16 부터 5.3.24 까지는 큰 문제 없고 무난하게 5.3.22라 5.3.22 사용
이 버전에 따라서 사용 할 수 있는 라이브러리도 달라진다.
3) 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>
현재 사용하는 서버와 호환성이 더 좋은걸로 변경 → 그대로 사용해도 큰 문제는 없음
artifactId와 version을 위와 동일하게 수정하기
4) 추가 라이브러리 설치
필요한 라이브러리는 위 페이지에서 전부 찾을 수 있다. 우선 내가 설치한 것들을 위주로 정리.
ojdbc6 (기본)
<dependency>
<groupId>oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.3</version>
<scope>system</scope>
</dependency>
// 사설저장소 필요하다. 사설저장소 추가하는 방법 porm.xml 페이지 확인!
Spring-JDBC
아무거나 쓰면 안되고, spring version에 맞춰서 사용해야 한다. 현재는 Pom.xml에 써놓은 5.3.22 를 다운로드 했다. 스프링에서 JDBC를 사용하기 위한 라이브러리다.
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
// 어차피 내가 선언한 값을 쓸거기 때문에 나중에 유지보수 생각하면
// version을 ${org.springframework-version} el구문으로 바꿔주는게 편리하다.
mybatis (기본)
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.13</version>
</dependency>
mybatis-spring
spring에서 mybatis를 사용하기 위한 라이브러리다.
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.2</version>
</dependency>
commons-dbcp
connectionPool을 이용하기 위한 라이브러리다.
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
rombok
어노테이션으로 코드 반복 작성을 확연히 줄어들게 만들어주는 롬복은 필수 설치다. 롬복은 1.18버전이 무난하게 잘 돌아간다.
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
<scope>provided</scope>
</dependency>
롬복은 pom.xml에 설치 후 다운로드 되면 우리가 지정한 repository 폴더에서 확인을 해봐야 한다.
/Users/hyelinsin/dev/apache-maven-3.9.2/repository/org/projectlombok/lombok/1.18.12
빨간색 jar 파일 더블 클릭 후 실행 돌렸을 때 IDEs 아래에 내가 사용하고 있는 프로그램이 잘 나온다면 사용에 문제가 없다.
11 ) 라이브러리 폴더 생성 후 추가 업로드
taglibs.jar 는 파일로 추가 업로드 해주면 기본적인 세팅은 끝이 난다!