본문 바로가기

Spring

[211229] Spring 설치

Spring 설치

 

 

 

 

 

 

이클립스 help - 이클립스 마켓플레이스에서 spring 검색

 

모두 동의해서 설치

 

 

 

 

 

체크박스 수동 체크하기

 

설치 중간에 체크박스 나오는 것 반드시 체크하고 install 을 진행하여야 한다.

 

 

 

 

 

 

 

 

 

 

 

설치 끝나면 이클립스 restart 된다.

 

new project 만들기 - others - spring legacy project 검색

설정 맞추기

 

3개 깊이로 패키지 생성

 

Spring 설치하면 Apache Maven이 함께 설치 된다.

 

Apache Maven : 자바용 프로젝트 관리 도구로 Project Object Model(POM) XML문서를 통해 해당 프로젝트의 버전 정보 및 라이브러리 정보들을 통합하여 관리하는 프레임워크
- 라이브러리 종속성
일반적인 프로젝트는 개발자가 필요한 라이브러리를 직접 찾아서 추가해야 하지만 Maven을 사용하면 pom.xml문서에 사용하고싶은 라이브러리를 등록하여 자동으로 프로젝트에 추가되게 하여 라이브러리 관리의 편리성 제공

 

 

spring 프로젝트 우클릭 -> properties -> project facets 의 java 1.8버전으로 수정, dinamic web module 4.0으로 수정

project settings 의 contextPath / 로 지정

java build path의 jre system library Edit 해서 workspace default인 openjdk 1.8로 지정

 

나는 hotspot쓸때도 있음 .. project7이후로   

 

이후 https://talkingpotatosescape.tistory.com/manage/newpost/85?type=post&returnURL=https%3A%2F%2Ftalkingpotatosescape.tistory.com%2F85 

 

https://talkingpotatosescape.tistory.com/manage/newpost/85?type=post&returnURL=https%3A%2F%2Ftalkingpotatosescape.tistory.com%2F85

 

talkingpotatosescape.tistory.com


라이브러리 추가 & 버전 관리

pom.xml 수정

 

https://mvnrepository.com/

spring 검색

 

 

사용할 버전의 spring 선택

 

 

내가 선택한 Spring 버전에 의존적인 외부 라이브러리들의 버전도 알려 준다.

updates : 업데이트 가능한 버전

외부라이브러리 버전들
aspectj 1.8.9

project 7 > pom.xml 파일

 

<dependency> 하나가 라이브러리 한 개이다.

aspectj 1.8.9 버전으로 수정, spring 4.3.30 버전 사용할 것이므로 수정, slf4j는 spring 검색한 곳에서 나오지는 않지만 따로 검색해서 적절한 버전 찾아 일단 작성 

 

org.slf4j 검색

project6 에서 설치해서 사용했던 서블릿 버전 찾아 매치해주기 

 

수정

javax.servlet 으로 검색해서 4.0 버전중 가장 최신인 4.0.1 로 pom.xml에 작성 또는 구문 붙여넣기

javax.servlet 으로 검색
동일하게 pom.xml에 구문 작성

 

Dependencies 가 0이면 버전 신경쓰지 않아도 된다.

따로 다운로드 하지 않아도 수정한 버전들 자동으로 Maven Dependencies에 등록된 것 확인 가능

Maven Dependencies&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;

 

javax.servlet 과 jstl 도 동일하게 버전 변경 진행 ( ※ jstl은 에러 나서 변경하지 않기로 함)

 


 

Spring 구조

 

webapp -> Context Root(Path)

views -> jsp/servlet 에서 jsp 폴더와 같음, jsp 폴더 위치

.xml -> 서버 구성 파일

spring 폴더 - .xml -> Spring 관련 서버 구성 파일

resources -> jsp/servlet 에서 static 폴더

classes -> 컴파일 된 파일들 

 

정적파일(js, css, img) : webapp/resources

동적파일(jsp) : views

java 파일 : src/main/java

mybatis 구성/ 매퍼 : src/main/resources

 

 

 

 

 

 

 


 

web.xml 수정

 

1. 서블릿 버전인 4.0으로 수정 (4.0.1 의 .1 까지 적을 필요는 없음)

4.0

 

2. 필터 작성

인코딩 필터 서블릿에서는 만들어서 사용하였는데 스프링에는 이미 있는 것 사용하면 된다.

인코딩 타입을 이전엔 코드에 넣어주어야 했는데 지금은 불가하므로 파라메터로 넣어주면 된다.

/* : 모든 요청에 대해 인코딩 처리

  <filter>
    <filter-name>EncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
      <param-name>forceEncoding</param-name>
      <param-value>true</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>EncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

 

서버 동작

톰캣에 project7 추가하고 contextroot도 / 로 지정 (/는 2개 있으면 안 됨)

project 7 - properties - Project Facets - Dynamic Web Module (4.0로 수정), java(1.8로 수정)

project 7 - properties - BuildPath - Libraries(1.8 사용할 라이브러리로 바꿔 줌, 나는 openJDK 말고 다른 거 했음)

 

라이브러리

 


 

@RequestMapping(value = "/", method = RequestMethod.GET) 어노테이션

-> 서블릿에서 매핑주소 적은 어노테이션에 해당 @WebServlet("")

-> doGet doPost로 구분해서 메서드 적을 필요 없음 

-> public String home() -> "/" 주소 , GET 메서드에 동작하는 함수이다. ("/" -> Context Root 포함)

post로 바꾸면 post로 동작함

 

계층 형태로 매핑 가능 (톰캣 pro7 ContextRoot /로 지정한 상태)

localhost/x

Logger.info : 로깅 정보 남겨주는 것

return "home" : jsp파일 home 찾는 것

원래 서블릿 쓸 때는 포워드 할 때 /WEB-INF/views/home.jsp 로 다 적어주어야 했었으나 스프링에는 관련 프레임워크가 설정되어있다. -> servlet-context.xml 확인하면 prefix 접두사 suffix 접미사 설정되어 있음 (수정도 가능)

servlet-context.xml


DB 연결

 

기존 pro6 에서 썼던 구성 파일들 가져와서 알맞게 수정한다.

구성 파일들 붙여넣기

 

mybatis-config 활용해서 servlet-context 작성!

<context:property-placeholder location="file:///C:/users/lmry/oracle_connection.prop" />
	
	<beans:bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<beans:property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></beans:property>
		<beans:property name="url" value="${cloud-url}"></beans:property>
		<beans:property name="username" value="${user}"></beans:property>
		<beans:property name="password" value="${password}"></beans:property>
	</beans:bean>

작성하고 나면 org.springframework.jdbc.datasource.DriverManagerDataSource 에 밑줄 오류 남

-> 라이브러리 필요하기 때문

-> pom.xml 가서 필요 라이브러리(마빈 레포에서 sping jdbc 검색 4.3.30 ver) 등록해준다.

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>${org.springframework-version}</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
        <!-- 가져온 라이브러리 -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
			<version>${org.springframework-version}</version>
		</dependency>

어차피 4.3.30 버전은 위에서도 변수로 가져와 사용하므로 변수로 변경해 주었음

 

 

추가적으로 마이바티스 연계할 거라서 미리 관련 라이브러리들 넣어준다.

마이 바티스도 그동안 사용하던 버전 (3.5.9) 찾아서 넣어주고

마이 바티스 스프링 연동해서 사용하기 위한 마이바티스 스프링도 검색해서 넣어준다. (최신버전 2.0.6)

jdbc 오라클 드라이버(ojdbc8 검색)도 넣어준다. ( ※ 버전X 우리가 그동안 쓰던 라이브러리들과도 연동이 돼야 하기 때문에 아래 걸로 넣어준다.) 

<dependency>
<groupId>com.oracle.ojdbc</groupId>
<artifactId>ojdbc8</artifactId>
<version>19.3.0.0</version>
</dependency>

 

		<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.5.9</version>
		</dependency>
		
		<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis-spring</artifactId>
			<version>2.0.6</version>
		</dependency>				
		
		<!-- https://mvnrepository.com/artifact/com.oracle.database.jdbc/ojdbc8 -->
		<dependency>
			<groupId>com.oracle.database.jdbc</groupId>
			<artifactId>ojdbc8</artifactId>
			<version>21.4.0.0.1</version>
		</dependency>

 

servlet-context.xml 로 와서 마저 작성한다.

관계

 

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/mvc"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:beans="http://www.springframework.org/schema/beans"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd
		http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">

	<!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure -->
	
	<!-- Enables the Spring MVC @Controller programming model -->
	<annotation-driven />

	<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
	<resources mapping="/resources/**" location="/resources/" />

	<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
	<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<beans:property name="prefix" value="/WEB-INF/views/" />
		<beans:property name="suffix" value=".jsp" />
	</beans:bean>
	
	<context:component-scan base-package="com.web.home" />
	
	<!-- 외부 구성 파일 로드 -->
	<context:property-placeholder location="file:///C:/users/lmry/oracle_connection.prop" />
	
	<!-- 데이터베이스 연결을 위한 구성 정보를 가지는 DataSource 객체 생성 -->
	<beans:bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<beans:property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></beans:property>
		<beans:property name="url" value="${cloud-url}"></beans:property>
		<beans:property name="username" value="${user}"></beans:property>
		<beans:property name="password" value="${password}"></beans:property>
	</beans:bean>
	
	<!-- 마이바티스와 연결하여 마이바티스로 데이터베이스 연결 세션 공장 생성 -->
	<beans:bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<beans:property name="dataSource" ref="dataSource"></beans:property>
		<beans:property name="configLocation" value="classpath:/mybatis/mybatis-config.xml"></beans:property>
		<beans:property name="mapperLocations" value="classpath:/mybatis/mapper/*.xml"></beans:property>
	</beans:bean>
	
	<!-- 마이바티스 데이터베이스 세션 공장으로부터 연결 세션 생성 -->
	<beans:bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
		<beans:constructor-arg ref="sqlSessionFactory"></beans:constructor-arg>
	</beans:bean>
	
</beans:beans>

 

작성 후에는 소스코드 중복되면 안 되므로 작성에 참고했던 mybatis-config.xml 구문들을 삭제한다.
account.xml , main.xml 의 구문들도 모두 삭제한다. (pro7에 매칭되는 클래스들이 없으므로 에러나기 때문)

 

 

계속 빈 생성을 못해서 오류 났었는데...  Marven Dependencies 가 바로 업데이트를 못해줘서 그런 것 같다.

mybatis 와 mybatis-spring 버전이 매치가 잘 돼야 함 (동일하다는 의미 아님) 3.5.8 로 바꿨다가 다시 3.5.9 하니까 서버오류 없이 잘 작동하는 걸 보니 3.5.9로 지정해 줬을때 제대로 업데이트가 안 됐다던가 했던 것 같다. 

Maven Dependencies의 모습

 

'Spring' 카테고리의 다른 글

[220213] csv 파일 읽기  (0) 2022.02.13