Backend 초기설정 + Mybatis
스프링 목록
- Spring(1) - 백엔드 초기설정
- Spring(2) -스프링 Client 파일 업로드(1)
- Spring(3) -스프링 Client 파일 업로드(2)
- Spring(4) - 백엔드 RESTFULL 로 바꾸기
- Spring(5) - 게시판 페이징 기능 추가하기
- Spring(6) - 검색 기능 추가
- Spring(7) - 프론트 ContextPath 동적 설정
스프링 부트 목록
- Spring Boot(1) - 스프링 부트 초기설정
- Spring Boot(2) - JPA 사용해 보기
- Spring Boot(3) - JPA 방향설정, 관계설정
- Spring Boot(4) - JPA 심화
- Spring Boot(5) - JPA 일대일 실습
백엔드 프로젝트 초기설정
사용할 톰켓버전 9.0
OracleJDBC
Spring JDBC
스프링 context 사용
스프링 webMVC 사용
Hikari CP 사용
Connection Poll 사용
Log4J
Log4J for Spring
Log4J for Hikari CP
MyBatis
MyBatis for Spring
Jason-databind (JSON 타입 리턴용 라이브러리)
0. pom.xml 추가
이클립스 에서 프로젝트 우클릭후 메이븐 프로젝트로 변경
<packaging>war</packaging>여기 밑에 아래내용 붙여넣기!!
1. src/test 폴더 만들기
1-1) src/test/java폴더 생성
1-2) src/test/resources 폴더 생성
2. src/main/resources 폴더 생성
이 폴더속에는 log4j.xml , mybatis-config.xml , Mapper.xml 등등..
들어갈 위치
3. 빌드패스 등록
이제 1번, 2번에서 만든 폴더들을 빌드패스 등록해야함
1.프로젝트를 우클릭 하여 Build Path ->Configure Build Path 클릭
2.Source 탭 클릭
3.add Folder 클릭
4.추가(방금 만든 폴더들 체크박스 클릭하면 추가됨)
{자기가만든 프로젝트이름}/src/test/java
{자기가만든 프로젝트이름}/src/test/resources
{자기가만든 프로젝트이름}/src/main/resources 가 소스탭에 추가되어야함
3.web.xml만들기
src/main/webapp/WEN_INF/web.xml
xml파일 생성후 아래 구문 복사해서 붙여넣고 저장.
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<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>
</servlet>
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
직접 servlet-context의 위치 수정가능(아래 param-value 경로)
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
4.servlet-context.xml 만들기
(WEB-INF/spring/appServlet/servlet-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:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.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">
<context:annotation-config></context:annotation-config>
<!--히카리cp config + 커넥션풀 -->
<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
<!-- 이렇게 하면 스프링 컨테이너에서 작동하는 sql 구문을 로그로 볼수 있게됨-->
<property name="driverClassName" value="net.sf.log4jdbc.sql.jdbcapi.DriverSpy"/>
<property name="jdbcUrl" value="jdbc:log4jdbc:oracle:thin:@127.0.0.1:1521:XE"/>
<!--자기가 사용하는 db의 아이디와 패스워드-->
<property name="username" value="hr"></property>
<property name="password" value="hr"></property>
<!--최대 풀 갯수와, 최소풀 갯수-->
<property name="maximumPoolSize" value="10"></property>
<property name="minimumIdle" value="2"></property>
</bean>
<!--dataSource-->
<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource">
<constructor-arg ref="hikariConfig"></constructor-arg>
</bean>
<!--Mybatis-spring용 SqlSessionFactoryBean-->
<!--SqlSessionFactory 쓸때 편하게 사용가능-->
<bean id="sqlSessionFactory"
class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="configLocation" value='classpath:mybatis-config.xml'>
</property>
</bean>
<!-- 여기에 패키지 경로들을 등록해줘야 스프링 컨테이너에서 관리 가능-->
<!-- @Repository, @Controller, @ResponseMapping-->
<context:component-scan base-package="com.my.board.dao"/>
<context:component-scan base-package="com.my.board.service"/>
<context:component-scan base-package="com.my.board.controller"/>
<!--Namespace탭에 mvc 체크하면 자동으로 생김-->
<!-- 왜 추가해주냐면 원래 spring에선 ModelAndView 타입을 반환 -->
<!--근데 Objcet 를 JSON으로 return할려면 이거 사용해야함-->
<mvc:annotation-driven></mvc:annotation-driven>
</beans>
xml 내용 설명
1.dateSource ->히카리데이터소스(class)
2.construc-arg-> (히카리config 참조)
3.sqlSessionFactory ->SqlSessionBean Class
(프로퍼티1+ 이름=dataSource 참조=datasoucre
(프로퍼티2+ 이름=configLocation 값=classpath:mybatis-config.xml
만약 프론트 / 백 분리 안할시 참고
</bean> 태그 아래에 해당 코드 추가하면 자동으로 jsp쓸때 매핑해줌
/resources 폴더로 경로를 설정해 주면 Client가 해당 파일들을 직접 열수 없음
아래 코드는 src/main/webapp/resources/css
src/main/webapp/resources/js
src/main/webapp/resources/html
src/main/webapp/resources/imgaes 매핑해준거
<mvc:resources location="/resources/images/" mapping="/images/**"></mvc:resources>
<mvc:resources location="/resources/css/" mapping="/css/**"></mvc:resources>
<mvc:resources location="/resources/js/" mapping="/js/**"></mvc:resources>
<mvc:resources location="/resources/html/" mapping="/html/**"></mvc:resources>
히카리cp+커넥션풀 안쓰고 SimpleDataSource사용시 참고
<!--커넥션 풀+히카리 cp 사용 안할거면 아래의 SimpleDricerDataSource사용-->
<bean id="dataSource" class="org.springframework.jdbc.datasource.SimpleDriverDataSource">
<property name="driverClass" value="oracle.jdbc.driver.OracleDriver">
</property>
<property name="url" value="jdbc:oracle:thin:@localhost:1521:xe"/>
<property name="username" value="hr"/>
<property name="password" value="hr"/>
</bean>
5.log4j.xml & mybatis-config 추가
src/main/resources/log4j.xml
src/main/resources/mybatis-config.xml
5-1)log4j.xml
5-2)mybatis-config.xml
6. log4jdbc.log4j2.properties파일 생성
src/test/resources/log4jdbc.log4j2.properties 밑에는 파일내용
log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
7. Junit4 임포트
src/test/java 패키지에 new ->others..-> JAVA-> JUnit ->JUint Test Case
클릭후 아무 이름 생성 후 next (바로 피니쉬 누르지 말것)
<중요> New JUint 4 test( o ) 라디오 버튼 클릭후 생성하면
자동으로 임포트됨
톰켓9.0버전 기준 JUint4 사용
8. test.java 생성
src/test/java (자동으로 만들지는 폴더들)에 test.java 만들기
package com.my.board.dao;
import static org.junit.Assert.assertEquals;
import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.my.board.vo.RepBoard;
import com.my.exception.FindException;
import com.my.exception.ModifyException;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {
"file:src/main/webapp/WEB-INF/spring/appServlet/servlet-context.xml"
})
public class RepBoardDAOOracleTest {
//자기가 테스트 하고 싶은 클레스
@Autowired
RepBoardDAOOracle dao;
//꼭 테스트 어노테이션 붙일것!
@Test
public void testFindAll()throws ModifyException,FindException {
//테스트 하고 싶은 코드...
List<RepBoard> list =
dao.findByNo(2);
//aserEquls로 자기가 예상하는 결과
assertEquals("제목2", list.get(0).getBoardTitle());
}
}
제대로 임포트 됬다면 아래코드에서 @RunWith에 빨간줄 안생길것
메소드 내용은 달라도 , 위의 어노테이션 설정들은 그대로
@Test 꼭붙여서 JUit 테스트 할것!
테스트 방법 : 만든 메소드 이름부분(리턴타입 바로 뒤) 드래그
1.testFindAll() 이부분 드래그
2.드래그 한부분 우클릭
3.Run as.. -> JUnit Test 클릭하면 됨.
스프링 목록
- Spring(1) - 백엔드 초기설정
- Spring(2) -스프링 Client 파일 업로드(1)
- Spring(3) -스프링 Client 파일 업로드(2)
- Spring(4) - 백엔드 RESTFULL 로 바꾸기
- Spring(5) - 게시판 페이징 기능 추가하기
- Spring(6) - 검색 기능 추가
- Spring(7) - 프론트 ContextPath 동적 설정
스프링 부트 목록