보라코딩
코드로 배우는 스프링 웹 프로젝트 Part1 본문
스프링을 공부하고 싶어서 책 추천 받아 구매했다.
처음으로 구매한 개발 관련 책 :)
스프링은 설정이 복잡해서 설정이 반이라고 한다... 후덜덜
설정만 했는데 하루가 지나갔다.
88쪽까지 진행했고 도중에 구글링하며 해결한 부분 등을 기록해 놓으려고 한다.
-----------------
103까지 mybatis 내용 추가! (1/29)
개발을 위한 준비
* JDK 11 버전 설치
* Eclipse 설치 및 웹 프로젝트 생성
* Tomcat 설치 및 연동
* 메이븐을 이용한 라이브러리 추가와 설정
* MariaDB 설치 및 계정 생성
* MyBatis / MyBatis-Spring 설정
* 스프링 MVC 개발 설정
자바는 8에서 11버전으로 up (JAVA_HOME 설정, PATH 설정)
STS3 설치 (STS4부터는 스프링부트만 지원하기 때문에 반드시 3버전 설치!)
https://github.com/spring-attic/toolsuite-distribution/wiki/Spring-Tool-Suite-3
Pages · spring-attic/toolsuite-distribution Wiki
the distribution build for the Spring Tool Suite and the Groovy/Grails Tool Suite - Pages · spring-attic/toolsuite-distribution Wiki
github.com
설치 후 UTF-8로 Encoding 수정
Tomcat9.0 버전으로 설치
sts3에서 server 추가해줘야 함
Spring Legacy Project로 생성 후 pom.xml 파일에서
스프링 5.0.7버전으로 수정
Java 도 11버전으로 변경
tomcat Could not find or load main class 오류 해결
오류 코드 : org.apache.catalina.startup.Bootstrap Could not find or load main class
org.apache.catalina.startup.Bootstrap Caused by: java.lang.ClassNotFoundException
해결 방법 :
startup.bat 파일 실행 톰캣이 설치된 위치 (C:\apache-tomcat-9.0.36\bin) 에 있는 startup.bat 파일 실행
[Error] 톰캣에러 : publishing to tomcat v9.0 server at localhost...' has encountered a problem
1. PackageExplorer -> Servers(톰캣이 있는곳) -> Tomcat v9.0 Server at localhost-config 에서
2. server.xml 파일을 오른쪽 클릭 한후 -> Properties -> Location 끝 부분에 해당 폴더 열기 버튼 클릭 후
3. 폴더에 server.xml 파일에서 Context 검색후에 중복된 Context를 제거!!!
저장한 다음 다시 실행하면 정상적으로 작동한다.
Lombok 라이브러리 설치하기 (1.18.24 최신 버전으로 받음)
jar 파일인데 알집으로 자꾸 열려서 알집 삭제해서 해결
jar 파일을 sts3 또는 이클립스 파일 있는 위치에 넣은 후 실행하면 경로 잘 찾음 ^^
JUnit - initializationError 해결하기
initializationError는 프로젝트에 JUnit 라이브러리가 추가되지 않아 발생!!
해결 방법 :
프로젝트 우클릭 -> Build Path -> Add Library -> JUnit 선택 Next -> version 선택, Finish
오라클 설치
=> 오라클 11g XE (홈페이지에서 설치 불가능해서 구글 드라이브에서 설치)
https://drive.google.com/drive/folders/122FDfnySpfuaBEeoIQU0EOa4GRZo5N6D
SQL Developer 22.2.1 (홈페이지에서 설치)
https://www.oracle.com/database/sqldeveloper/technologies/download/
Oracle SQL Developer Downloads
This archive. will work on a 32 or 64 bit Windows OS. The bit level of the JDK you install will determine if it runs as a 32 or 64 bit application. This download does not include the required Oracle Java JDK. You will need to install it if it's not already
www.oracle.com
F5 누르면 스크립트 출력창 나타난다.
실행은 ctrl + enter
데이터베이스 연동하기 위해 book_ex 사용자 생성하고 편집해서 권한 줌
8080 포트변경
exec dbms_xdb.sethttpport(9090);
JDBC 테스트 코드
JDBC 드라이버 정상 추가되었고 데이터베이스 연결 가능한지
테스트코드로 확인
JDBCTests 클래스 추가해서 아래와 같이 작성
package org.zerock.persistence;
import static org.junit.Assert.fail;
import java.sql.Connection;
import java.sql.DriverManager;
import org.junit.Test;
import lombok.extern.log4j.Log4j;
@Log4j
public class JDBCTests {
static {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
public void testConnection() {
try(Connection con =
DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:XE",
"book_ex",
"book_ex")) {
log.info(con);
} catch (Exception e) {
fail(e.getMessage());
}
}
}
JAVA JDK 버전 오류 오류 : Resource specification not allowed here for source level below 1.7
원인 : jdk의 버전이 1.7 미만이여서 발생하는 오류입니다.
해결 방법 : jdk의 버전을 1.7 이상으로 업그레이드
Project > Java Build Path > Libraries > 기존 라이브러리 제거(JRE System Library, JavaSE 1.7 미만인 경우에만) > Add Library > JRE System Library > 설치된 경로 찾아 추가 그 후 pom.xml 에서 자바 버전 변경
<?xml version="1.0" encoding="UTF-8"?> <properties> <java-version>11</java-version><!--change--> <org.springframework-version>3.1.1.RELEASE</org.springframework-version> <org.aspectj-version>1.6.10</org.aspectj-version> <org.slf4j-version>1.6.6</org.slf4j-version> </properties>
hikaricp root-context.xml
<!-- Root Context: defines shared resources visible to all other web components -->
<bean id="hikariConfig" class="co
m.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="book_ex"></property>
<property name="password" value="book_ex"></property>
</bean>
<!-- HikariCP configuration -->
<bean id="dataSource" class="co
m.zaxxer.hikari.HikariDataSource"
destroy-method="close"><constructor-arg ref="hikariConfig" />
</bean>
org.junit.vintage.engine.descriptor.RunnerTestDescriptor warnAboutUnfilterableRunner
import org.junit.Test; 로해결
DataSourceTests
package org.zerock.persistence;
import static org.junit.Assert.fail;
import java.sql.Connection;
import javax.sql.DataSource;
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 lombok.extern.log4j.Log4j;
@RunWith(SpringJUnit4ClassRunner.class) // 테스트코드가 스프링을 실행하는 역할을 할 것
@ContextConfiguration("file:src/main/webapp/WEB-INF/spring/root-context.xml") // 필요한 객체들을 스프링 내 객체로 등록
@Log4j
public class DatasourceTests {
@Autowired
private DataSource ds;
@Test
public void testConnectioin() {
try(Connection con = ds.getConnection()){
log.info(con);
}catch (Exception e) {
fail(e.getMessage());
}
}
}
mybatis 연동
구글 mybatis maven 검색해서 3.5.6 으로 가져와서 web.xml에 붙여넣기
사이트 안에서 mybatis spring 검색해서 2.0.6 으로 가져와서 web.xml에 붙여넣기
---
root-context.xml에 아래 내용 붙여넣기
<bean id="sqlSessionFactory"
class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
</bean>
---
DatasourceTest 파일에
@Autowired
private SqlSessionFactory sessionFactory;
@Test
public void testConnection2() {
try (SqlSession session = sessionFactory.openSession();
Connection connection = session.getConnection();){
log.info(session);
log.info(connection);
}
catch (Exception e) {
e.printStackTrace();
}
}
---
src/main/java 폴더 안에 org.zerock.mapper 패키지 만들고 TimeMapper 인터페이스 만들기
TimeMppaer 내용
TimeMapperTests 내용
---
root-context.xml에서 Namespaces 클릭하고 mybatis-spring 클릭해서 체크 한 후 저장 꼭!
그리고 동일 파일에 <mybatis-spring:scan base-package="org.zerock.mapper"/> 기입
---
src/main/resources 안에
org폴더 만들고 그안에 zerock 폴더 만들고 그안에 mapper 폴더만들어서(한번에 만들면 인식안됨)
TimeMapper.xml 파일만든다
--
TimeMapper.xml 파일에
mybatis dtd 내용 적기
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybaits.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.zerock.mapper.TimeMapper">
<select id="getTime2" resultType="string">
select sysdate from dual
</select>
</mapper>
---
maven에서 검색해서 찾아서 pom.xml에 붙여넣기
Log4Jdbc Log4j2 JDBC 4 1 » 1.16
---
*** 주의할점
-라이브러리 추가
- 설정
ㄴ Datasource 설정변경
ㄴ 102쪽 프로퍼티 파일 반드시 추가 (log4jdbc.lo4j2.properties)
'코딩 > Spring' 카테고리의 다른 글
코드로 배우는 스프링 웹 프로젝트 Part3 (ch9) (0) | 2023.02.05 |
---|---|
코드로 배우는 스프링 웹 프로젝트 Part3 (ch8) (0) | 2023.02.05 |
코드로 배우는 스프링 웹 프로젝트 Part3 (0) | 2023.02.05 |
코드로 배우는 스프링 웹 프로젝트 Part2 (1) | 2023.01.29 |
코드로 배우는 스프링 웹 프로젝트 Part2 (0) | 2023.01.29 |