스프링으로 게시판 만들어 보기 ( 기본설정, 마이바티스 + HikariCP )

2019. 6. 30. 15:45개발공부/spring

기본 세팅

패키지와 인터페이스, 클래스 파일들을 만들어서 기본적인 뼈대를 만들어 줍니다.

 

그다음 root-context.xml 에 세션 펙토리를 만들어 줍니다.

 

<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>

web.xml에 filter를 달아줍니다.

모든 요청에 대해서 UTF-8 인코딩을 적용했습니다.

 

 

<< filter와 Interceptor와 aop의 차이점 >>

filter는 스프링과는 연관이 없습니다

요청이 들어오게 되면 가장 먼저 filter는 거칩니다. ( 때문에 보통 인코딩 설정에 쓰임 )

filter는 스프링과는 연관기 때문에 web.xml에 설정합니다.

interceptor는 컨트롤러 호출 전에 동작합니다.

aop는 관점 지향 프로그래밍으로 원하는 클래스나 함수 전, 후, 예외처리 등등이 가능합니다.

 

 

root-context.xml namespace 설정

<?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"
	xmlns:jdbc="http://www.springframework.org/schema/jdbc"
	xsi:schemaLocation="http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.3.xsd
		http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring-1.2.xsd
		http://www.springframework.org/schema/beans https://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">

	<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
		<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property>
		<property name="jdbcUrl" value="jdbc:oracle:thin:@localhost:1521:xe"></property>
		<property name="username" value="springboard" />
		<property name="password" value="zara" />
	</bean>

	<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close">
		<constructor-arg ref="hikariConfig" />
	</bean>

	<!--
    <bean id="dataSource"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property>
        <property name="url" value="jdbc:oracle:thin:@192.168.219.103:1521:xe"></property>
        <property name="username" value="team03P"></property>
        <property name="password" value="increpas"></property>
    </bean>
	-->
	
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource"></property>
	</bean>

	<mybatis-spring:scan base-package="kr.coo.board.mapper" />
	<context:component-scan base-package="kr.coo.board.service"/>

</beans>

세션 펙토리를 말 그대로 db 세션을 만들어주는 공장입니다.

마이 바티스 세션 펙토리 빈을 만들기 위해서는 dataSource가 필요합니다.

dataSource는 쉽게 생각하면 db 접속 정보입니다.

커넥션 풀을 사용하기 위해서 hikariCP 사용했습니다.

 

 

Servlet 3.0 이상부터 multipart 데이터를 서블릿이 지원합니다.

세세한 설정은 하지 못하지만 충분한 기능을 가지고 있습니다.

이번 게시판 개발에서는 해당 기능을 사용하겠습니다.

<servlet>
	<servlet-name>appServlet</servlet-name>
	<servlet-class>org.springframework.web.servlet.DispatcherServlet
	</servlet-class>
	<init-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>/WEB-INF/spring/appServlet/servlet-context.xml
		</param-value>
	</init-param>
	<load-on-startup>1</load-on-startup>
	<multipart-config>
		<max-file-size>31457280</max-file-size>
		<max-request-size>104857600</max-request-size>
		<file-size-threshold>0</file-size-threshold>
	</multipart-config>
</servlet>

서블릿 설정에 Multipart-config를 추가합니다.

max-file-size - 파일별로 최대 파일 크기

max-request-size - multipart/form-data 요청 별로 최대 용량 ( 한 번에 받을 수 있는 최대 용량 )

file-size-threshold - 이 크기가 넘게되면 업로드하는 파일이 임시 디렉터리에 바로 저장된다. ( 디폴트 0 )

 

<beans:bean id="multipartResolver" class="org.springframework.web.multipart.support.StandardServletMultipartResolver"></beans:bean>

servlet-context.xml에 multipartResolver 빈을 등록합니다.

 

여기까지 기본 설정은 끝났습니다.

( 이후 변경 될 때마다 진행하면서 추가 )