스프링 프로젝트에 앞서 스프링 기초 설정부터 해보겠습니다.
우선 프로젝트 환경은
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 내용이 잘 오는것을 확인 할 수 있습니다!
스프링 부트만 하다가 스프링을 이용해서 처음부터 설정을 해보는건 처음이라서
오류도 많고.. 멘탈도 많이 나갔었는데ㅠㅠㅠ 좀 더 공부 해야겠습니다.
'자바 > 스프링' 카테고리의 다른 글
카카오 페이 api 이용하기 (1) | 2021.07.01 |
---|---|
Mybatis 사용시 [unread] 오류 (0) | 2021.06.28 |
Zara) 아이디, 비밀번호 찾기 페이지 만들기 (0) | 2021.06.01 |
Zara) 회원가입 페이지 만들기 (0) | 2021.05.23 |
미니프로젝트) Zara(자전거 라이딩) 홈페이지 만들기 (0) | 2021.05.23 |