스프링부트! 게시판 만들면서 배우기! 1. 환경설정
우선 이클립스을 켜서 스프링 부트 프로젝트를 하나 만들어보겠습니다!
File - new - others에 들어가셔서 Spring을 검색하시면! Spring Starter Project가 있습니다! 이걸 누르시고!
Name에 프로젝트 이름을 적어주시고 Type은 Gradle과 Maven이있는데 이번 프로젝트에는 Maven을 써보겠습니다!
자바 버전은 8버전입니다! 다음에 패키지 명은 각자 원하시는거 하셔도되구요! 그리고 Next를 눌러서
이번 개발에 필요한 라이브러리를 선택해주도록하겠습니다!
이번 프로젝트에서는 이 6가지를 우선 골라주도록하겠습니다! 다음 finish를 눌러주어 프로젝트를 만들어 줍니다!
각각 라이브러리 역할은 밑에서 설명하겠습니다! 자 프로젝트를 만들면 이런식으로 폴더가 되어있습니다!
여기서 Application을 들어가 실행시켜보겠습니다.
바로 실행시키시면 아마
Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.
라는 오류가 뜨실텐데요! 이건 저희가 DB를 사용한다고 해놓고 DB설정을 안해줘서 그렇습니다.
여기 application,properties에 들어가 db접속에 필요한 정보를 써줍니다!
# DataSource
spring.datasource.url=jdbc:mysql://localhost:3306/[DB스키마명]?autoReconnect=true
spring.datasource.username=[DB접속Id]
spring.datasource.password=[DB접속Password]
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
저희는 MySql를 이용하므로 이렇게 설정해줍니다!
설정 후 다시 실행 시켜보시면! 이런식으로 8080포트로 시작됫다! 라고 나올겁니다 ㅎㅎ 그럼 이제
설정의 일부분을 완성시킨겁니다.
자 그럼 저희가 추가한 라이브러리에 대해 잠깐 알아보도록 하겠습니다.
pom.xml에 들어가시면 추가된 의존성에 대해 있으실 텐데요!
JDBC - 스프링에서 데이터베이스와의 연동을 위해서 사용합니다.
Spring web : 스프링으로 웹 개발을 할 때 웹관련 컨트롤러들을 사용 할 수 있게 해줍니다.
MyBatis - 전에 말씀드린 것 처럼 쿼리문을 조작할 떄 좀 더 쉽고 간편하게 할 수 있도록 도와주는 프레임 워크입니다.
DevTools - 스프링 개발 시 유용한 기능들을 제공해주는 툴입니다. 대표적이니 기능으로 프로젝트 내 내용들이 바뀔때마다 자동 시작 및 live reload를 해주어 수동으로 재시작하지 않아도 바로바로 변경사항을 확인 할 수 있습니다.
MySQL driver - JDBC를 통해 mysql 연결을 하기 위한 드라이버입니다.
Lombok - 롬북은 Dto에서 getter,setter등 생성자등을 간편하게 만들어주는 라이브러리입니다. 자세한 얘기는 사용법대 말씀드리겠습니다.. 이놈이 제 컴퓨터에서 그런지 몰라도.. 참으로 힘들게했습니다 ㅠㅠ
다음을 추가해줍니다.
스프링에서는 Thyleaf를 권장하기에 Jsp,jstl이 기본으로 내장되어있지 않습니다.
log4jdbc는 JDBC를 통해 쿼리문이 실행되면 실행 문과 실행결과를 콘솔 창에서 볼 수있습니다!
<!-- JSTL, 스프링의 기본 내장 톰캣에는 이게 없습니다. -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<!-- JSP 엔진, 스프링의 기본 내장 톰캣에는 이게 없습니다. -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<!-- 이게 있으면 실행되는 SQL을 예쁘게 로그로 보여줍니다. -->
<dependency>
<groupId>org.bgee.log4jdbc-log4j2</groupId>
<artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>
<version>1.16</version>
</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>
다음은 JSP를 사용하기 위해 설정을 해보도록 하겠습니다!
src-main 밑에 webapp-WEB-INF-jsp를 만들어줍니다!
이제 여기서 View들을 저장해놓고 사용 할 예정입니다. 이 jsp뷰들은 WEB-INF밑에 있기에 직접 접근 하지는 못하고 컨트롤러를 통해 접근 가능합니다.
자 이렇게 해주시구요! 이제 jsp는 스크립트언어로 사용하겠다 라고 선언을 해줘야하는데요
이는 application.properties에서 해주시면 됩니다. 저는 properties 확장자보다 이제 yml 확장자를 사용하여 환경설정을 해보도록 하겠습니다
-yml 란?
Yaml은 인간이 보기에 매우 이해하기 쉬운 형태를 가지고 있고 properties확장자보다 뭔가 보기도 편하고 작성도 편하더라구요 ㅎㅎ (사실 게시판 만들때 참고한 블로그에서 yml를 사용했습니다)
properties와 비교해보자면
기존 mysql 설정에서
# DataSource
spring.datasource.url=jdbc:mysql://localhost:3306/[DB스키마명]?autoReconnect=true
spring.datasource.username=[DB접속Id]
spring.datasource.password=[DB접속Password]
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
이걸 yml 으로 바꾸면! 이런 식으로 바꿀 수있습니다.
아 driver-class와 url이 바뀐건 이제 log4jdbc를 사용할것이기 떄문에 바꿔주시면 됩니다!
datasource:
driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
url: jdbc:log4jdbc:mysql://127.0.0.1:3306/starter?autoReconnect=true&useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
username: root
password:
이런 형식으로 jsp설정을 해주면 spring mvc 모델중 view는 jsp확장자를 쓸것이고 그 위치는 prefix에 적은 위치가 되는 것입니다.
spring:
mvc:
view:
prefix: /WEB-INF/jsp/
suffix: .jsp
또한 혹시라도 포트 번호를 바꾸고싶다! 하시면 아래처럼 원하시는 포트번호를 사용 하실 수 있습니다.
server:
port: 8070
자 이제 jsp 설정도 끝났구요!
기본적인 설정은 끝난거같습니다.
이제 다음 글 부터는 기본 인덱스 페이지 부터 만들어 보겠습니다.