본문 바로가기

자바/스프링

스프링 기본 설정하기!

스프링 프로젝트에 앞서 스프링 기초 설정부터 해보겠습니다.

우선  프로젝트 환경은

JDK 1.8

JDE 15~

ORACLE 

Mybatis

lombok

jsp  

이정도 입니다

 

 

우선 레거시 프로젝트를 만들어 봅시다!

Spring MVC Project를 눌러서 ! 만들어줍니다!

 

그 후 pom.xml에 들어가서

자바 버전을 사용할 버전으로 수정해줍니다

 

그 후에 

사용할 라이브러리들을 추가해줍니다.

 

		<!--  커넥션 풀 이용 -->
		
		<dependency>
			<groupId>com.zaxxer</groupId>
			<artifactId>HikariCP</artifactId>
			<version>2.7.4</version>
		</dependency>

		<!--sql 로그 -->
		<dependency>
			<groupId>org.bgee.log4jdbc-log4j2</groupId>
			<artifactId>log4jdbc-log4j2-jdbc4</artifactId>
			<version>1.16</version>
		</dependency>
		
		<!-- 스프링 JDBC -->

		<dependency>
		    <groupId>org.springframework</groupId>
		    <artifactId>spring-jdbc</artifactId>
		    <version>${org.springframework-version}</version>
		</dependency>
		
		<!-- 마이바티스 -->

		<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.4.6</version>
		</dependency>

		<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis-spring</artifactId>
			<version>1.3.2</version>
		</dependency>
		
		<dependency>
		   <groupId>com.oracle.database.jdbc</groupId>
		   <artifactId>ojdbc6</artifactId>
		   <version>11.2.0.4</version>
		</dependency>



		<!-- getter, setter, 생성자 등을 자동으로 생성해주는 -->

		<dependency>
		    <groupId>org.projectlombok</groupId>
		    <artifactId>lombok</artifactId>
		    <version>1.18.20</version>
		    <scope>provided</scope>
		</dependency>

		<!-- 파일 첨부를 위한 라이브러리 -->
		<dependency>
	    	<groupId>commons-io</groupId>
	    	<artifactId>commons-io</artifactId>
	    	<version>2.8.0</version>
		</dependency>
		
		<dependency>
		    <groupId>commons-fileupload</groupId>
		    <artifactId>commons-fileupload</artifactId>
		    <version>1.4</version>
		</dependency>    

다음은 프로젝트 빌드 패치를 해줍니다. 프로젝트 오른쪽 마우스 클릭 후 build path로 가서 

Java Compiler 와 Project Facets로 들어가 

동일하게 자바 버전을 수정해줍니다.

그 후 servers에서 사용할 톰캣 버전을 선택해주시고 추가해주시면됩니다!

그러면 일단 기본 톰캣, 설정은 다 되었구요! 

 

이제 스프링 Controller,Service,등 어노테이션들과 Mybatis 설정을 하겠습니다!

 

우선 WEB-INF - spring - appServlet-servlet-context.xml을 수정하겠습니다!

기존 부분에서 

	<!--  @Controller 파일들의 위치 설정 -->
	<context:component-scan base-package="com.spring.board.controller" />
	

를 추가해줍니다 보통 어노테이션 관련 패키지 스캔은 아래와 같이 파일에서 나눠서 적어줍니다.


1. 뷰, 컨트롤러, 핸들러와 관련된 패키지 스캔은 서블릿 설정 파일에서

2. 기타 서비스, 저장소 등 비지니스와 관련된 패키지는 컨텍스트 설정 파일에서

 

위 코드는 저희가 @controller 로 어노테이션을 줘 컨트롤러클래스로 이용할 것들을 모아놓을 패키지를 말해줍니다.

저는 구성이 이렇게 되어있기에 패키지 명을 저렇게 적어줬습니다.

다음은 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"
	xmlns:mybatis-spring="http://mybatis.org/schema/mybatis-spring"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring-1.2.xsd
		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">

	<!--  Connection pool를 이용하기 위한 Hikari 설정 및 오라클 DB 설정-->
	
	<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
		<property name="driverClassName" value="net.sf.log4jdbc.sql.jdbcapi.DriverSpy"></property>
		<property name="jdbcUrl" value="jdbc:log4jdbc:oracle:thin:@localhost:1521:ORCL"></property>
		<property name="username" value="test"></property>
		<property name="password" value="user비밀번호"></property>
	</bean>

	<!-- HikariCP configuration -->
	<!-- 자바에서는 DateSource라는 인터페이스를 이용해서 커넥션풀을 사용한다. -->
	
	<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource"
		destroy-method="close">
		<constructor-arg ref="hikariConfig" />
	</bean>

	<!--  Mybatis와 Oracle 서버를 연결해주는 객체 설정 -->
	
	<bean id="sqlSessionFactory"
		class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource"></property>
		<property name="configLocation" value="/WEB-INF/mybatisAlias/mybatisAlias.xml"></property>
	</bean>

	<!-- Mybatis에서 Mapper파일을 찾아가게 하기 위해서 Mapper 파일들의 위치를 설정해준다. -->
	<mybatis-spring:scan
		base-package="com.spring.board.mapper"/>


	<!--@Service 서비스 파일들의 위치를 설정해준다. -->
	<context:component-scan
		base-package="com.spring.board.service">
	</context:component-scan>
		
</beans>

그다음 MybatisAlias를 이용하기 위한 파일을 하나 만들어줍니다. 저는 이 위치에 만들어 주었습니다.

Alias는 

보통 Mapper 사용시

resultType을 com.spring.board.model.UserVO등 길게 써줘야합니다.

코드가 복잡해지는것을 방지하기위해  별명을 지어 사용하는 것입니다.

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.spring.board.mapper.UserMapper">
	<select id="getUserList" resultType="UserVO">
		select * from users
	</select>
</mapper>

MybatisAlias.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0/EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
	
	<typeAliases>
		<typeAlias type="com.spring.board.model.UserVO" alias="UserVO"/>
	</typeAliases>
	
	
</configuration>

 

여기까지가 Mybatis를 사용하기 위한 설정이였습니다

간단하게

오라클에 test라는 유저를 만들어 test라는 users라는 테이블을 만들어 간단히 테스트를 해보겠습니다.

 

우선 Controller를 작성하겠습니다.

/user/get-user라는 url로 요청하면 db로 부터 user 정보를 불러와 화면에 넘겨주도록 했습니다.

package com.spring.board.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.spring.board.model.UserVO;
import com.spring.board.service.UserService;

@Controller
@RequestMapping("/user")
public class UserController {
	
	@Autowired
	UserService userService;
	
	@RequestMapping(value = "/get-user", method = RequestMethod.GET) 
	public String getUser(Model model) {
		List<UserVO> userVO = userService.getUserList();
		System.out.println(userVO);
		model.addAttribute("user", userVO);
		return "user/user";
	}
	
}

UserMapper.java

package com.spring.board.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;

import com.spring.board.model.UserVO;

@Mapper
public interface UserMapper {
	public List<UserVO> getUserList();
}

UserMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.spring.board.mapper.UserMapper">
	<select id="getUserList" resultType="UserVO">
		select * from users
	</select>
</mapper>

 

UserService.java

package com.spring.board.service;

import java.util.List;

import org.springframework.stereotype.Service;

import com.spring.board.model.UserVO;


public interface UserService {
	public List<UserVO> getUserList();
}

 

UserServiceImpl.java

package com.spring.board.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.spring.board.mapper.UserMapper;
import com.spring.board.model.UserVO;
import com.spring.board.service.UserService;


@Service
public class UserServiceImpl implements UserService {

	@Autowired
	UserMapper userMapper;
	
	
	@Override
	public List<UserVO> getUserList() {

		return userMapper.getUserList();
		
	}

}

 

마지막으로 controller에서 리턴값으로 화면을 보여줄 user.jsp를 작성해줍니다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	환영합니다 ${user[0].name}님!
</body>
</html>

 

자 이걸 실행시켜보면!

DB 내용이 잘 오는것을 확인 할 수 있습니다!

 

스프링 부트만 하다가 스프링을 이용해서 처음부터 설정을 해보는건 처음이라서 

오류도 많고.. 멘탈도 많이 나갔었는데ㅠㅠㅠ 좀 더 공부 해야겠습니다.